从c中的文本文件中读取整数

时间:2014-03-24 09:56:58

标签: c

我想从文件输入到我的c程序。输入应该由数字和字符组成,然后我想区分它们。当fscanf在遇到非整数时返回0,它不值得在这里使用,该怎么办?

2 个答案:

答案 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,只需检查并使用即可。 希望它会对你有所帮助。