如何只从C中带空格的文件中获取数字

时间:2013-04-07 10:59:47

标签: c

如何从包含数字,空格和字符的文件中仅获取前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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;
}

答案 2 :(得分:0)

使用fgets在单个字符数组中解析文件内容,然后strtok()解析每个数字。
您使用相应功能存储的双重数字。检查this,了解如何做到这一点。