我想从文件输入到我的c程序。输入应该由数字和字符组成,然后我想区分它们。当fscanf在遇到非整数时返回0,它不值得在这里使用,该怎么办?
答案 0 :(得分:1)
#include <stdio.h>
#include <ctype.h>
int main(){
int num, status;
FILE *fp = fopen("data.txt", "r");
while(EOF!=(status = fscanf(fp, "%d", &num))){
if(status == 1){
printf("%d\n", num);
} else { //if(status == 0){
(void)fgetc(fp);//replace by @chux's suggestion
int ch;
while(EOF!=(ch = fgetc(fp))&amp;&amp; ch!=&#39; - &#39;&amp;&amp;!isdigit(ch));
if(ch ==&#39; - &#39;){
int pch = fgetc(fp);
如果(ISDIGIT(PCH)){
ungetc(pch,fp);
ungetc(ch,fp);
}
} else {
ungetc(ch,fp);
}
德尔>
}
}
fclose(fp);
return 0;
}
答案 1 :(得分:-1)
只需一次一个字符地读取文件并检查值的范围,因为我们知道'0'到'9'的整数值中的值是48到57,只需检查并使用即可。 希望它会对你有所帮助。