如何从包含数字、空格和字符的文件中仅获取前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发布于 2013-04-07 19:47:10
#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-07 19:22:35
您可以使用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-07 19:14:00
使用fgets解析单个字符数组中的文件内容,然后为每个数字执行strtok()。
每个数字都存储在一个双精度的对应函数中。请查看this,看看如何做到这一点。
https://stackoverflow.com/questions/15861614
复制相似问题