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
#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 を使用して、ファイルの内容を単一の char 配列で解析し、次にstrtok()それを数値ごとに解析します。
対応する関数を使用して double に格納する各数値。これをチェックして、それを行う方法を確認してください。

于 2013-04-07T11:13:59.547 に答える