在我的主要功能中,我有以下内容:
int main(){
FILE *fp;
char ch;
char name[100];
printf("Create file with name: ");
scanf("%s", &name);
fp = fopen(name, "w");
printf("Enter data to be stored in the file: ");
while((ch=getchar())!=EOF){
if(isNumeric(ch)){
putc(ch,fp);
}
}
fclose(fp);
return 0;
}
使用getchar()
创建文件并将数据(由用户输入到输入流的末尾或Ctrl + Z)存储在其中。我想检查提供的数据是否已经数字,但我是在摇滚。我已经阅读了很多主题,并且所有答案都提示isdigit()
,但它不会使用浮点验证数字。这是我的isNumeric()
函数:
int isNumeric (const char * s)
{
if (s == NULL || *s == '\0' || isspace(*s))
return 0;
char * p;
strtod (s, &p);
return *p == '\0';
}
答案 0 :(得分:0)
这里的根本问题是isNumeric
旨在确定字符串是否为有效数字,但您只提供isNumeric
个字符一次。
要解决此问题,您需要一个存储字符的char
数组,直到您到达数组应包含完整数字的点。然后使用isNumeric
检查数组。