您的参数是指针数组,而不是字符串。的类型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
.