所以我有一个名为num.txt的文本文件,它有一个由空格分隔的整数字符串。
假设num.txt包含:5 3 21 64 2 5 86 52 3
我想以read格式打开文件并获取号码所以我可以说

int iochar;
FILE *fp;

fp = fopen("num.txt", "r");
while ((iochar=getc(fp)) !=EOF){
    if(iochar!=' '){
        printf("iochar= %d\n", iochar); //this prints out the ascii of the character``
    }

^这适用于单个数字。但是我应该如何处理两个或三个以上的数字?

最佳答案

使用strtol()解析整数列表:

char buf[BUFSIZ];

while (fgets(buf, sizeof buf, stdin)) {
    char *p = buf;

    while (1) {
        char *end;

        errno = 0;
        int number = strtol(p, &end, 10);

        if (end == p || errno) {
            break;
        }

        p = end;

        printf("The number is: %d\n", number);
    }
}

如果要分析浮点数,请使用strtod()

10-08 07:36