2

如何从包含数字、空格和字符的文件中仅获取前 100 个数字(负数、整数和浮点数)。

我当时正在使用它,但我认为 fgets 不是最好的命令。

int readFile (FILE* fp)
{

char number[101] = "test";
//printf ("%s\n", number);
fgets(number, 101, fp);
//fscanf(fp, "%s", number);
printf ("%s", number);

return 0;
}

我想如果空格和不需要的字符被删除,可以使用这个当前的方法,但目前这甚至不起作用,除非文件中没有空格。

这是一个文件的例子

44.5 -55 93942 11 text     text text 333.55 999999999999 1111
4

3 回答 3

2

您可以使用fgets获取该行,然后使用sscanf提取所需的数据:

double d1, d6;
int i2, i3, i4, i8;
long long ll7;

sscanf(input, "%lf %d %d %d %*s %*s %*s %lf %lld %d", &d1, &i2, &i3, &i4, &d6, &ll7, &i8);
于 2013-04-07T11:22:34.940 回答
2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int readFile (FILE* fp){
    char buff[4096];

    while(NULL!=fgets(buff, sizeof(buff), fp)){
        char *number, *check;
        for(number=buff;NULL!=(number=strtok(number," \t\n"));number=NULL){
            //separate string by strtok, isNumber check by strtod 
            strtod(number, &check);
            if(*check=='\0'){
                printf("%s\n",number);
            }
        }
    }

    return 0;
}

int main(){
    readFile(stdin);

    return 0;
}
于 2013-04-07T11:47:10.473 回答
0

使用 fgets 解析单个字符数组中的文件内容,然后解析strtok()每个数字。
您使用对应功能将每个数字存储在双精度数中。看看这个看看你怎么能做到这一点。

于 2013-04-07T11:13:59.547 回答