パラメータは文字列ではなくポインタの配列です。の型はではなくであるside1
べきです。char*
char*[]
void checkTriangle(char *side1, /* ... */)
{
/* ... */
}
浮動小数点値を処理するには、文字列の形式を確認できます。
#include <ctype.h>
#include <stddef.h>
int checkTriangle(const char *s, size_t n)
{
size_t i;
int p1 = 1;
for (i = 0; i < n; ++i) {
if (s[i] == '.')
p1 = 0;
else if (!isdigit(s[i]) && !p1)
return 0;
}
return 1;
}
ところで、あなたの機能はあまりうまく設計されていません。呼び出し元で出力し、文字列のサイズに依存しないようにする必要があります。
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int checkTriangle(const char *s, size_t n)
{
size_t i;
for (i = 0; i < n; ++i)
if (!isdigit(s[i]))
return 0;
return 1;
}
int main(void)
{
char s[32];
size_t n;
fgets(s, sizeof s, stdin);
n = strlen(s) - 1;
s[n] = '\0';
if (!checkTriangle(s, n))
puts("You entered string");
return 0;
}
標準 C ライブラリをすべて使用できる場合は、 も使用できますstrtod
。