0

テキスト ファイルの内容を読み取って配列に入れるにはどうすればよいですか? たとえば、テキスト ファイルに 3、2、1、0 があり、ファイルを読み取って値を配列に格納したいとします。私はこれを行うためにfscanf関数を使用しています:

int a[4];
point = fopen("test.txt", "r");

for(int i = 0; i < 4; i++)
{
    fscanf( point , "%d " , &a[i]);              
}

// printing put the values ,but i dont get the text file values

for(int i = 0; i < 4; i++)
{
    printf("%d\n" , a[i]);  
}

このプログラムを実行しましたが、テキスト ファイルにある値を取得できませんでした。誰でもこれを行う方法を提案できますか? 関数で具体的に解決したいfscan

4

5 に答える 5

1

ここで答えを見つけることができます:

#include <stdio.h>
int main()
{
    FILE* f = fopen("test.txt", "r");
    int n = 0, i = 0;
    int numbers[5]; // assuming there are only 5 numbers in the file

    while( fscanf(f, "%d,", &n) > 0 ) // parse %d followed by ','
    {
        numbers[i++] = n;
    }

    fclose(f);
}
于 2013-09-16T06:23:28.990 に答える
1

fscanfストリームからデータを読み取り、パラメータ形式に従って指定された場所に格納するために使用される場合。リファレンスはこちらから入手できます。

したがって、ファイルの値の形式を確認する必要があります。たとえば、ファイルに「3,2,1,0」がある場合、形式を「%d」に設定する必要があります。これは、各値の後に ', '。

#include <stdio.h>

int main()
{
    int a[4], i;
    FILE *point = fopen("test.txt", "r");

    for(i = 0; i < 4; i++)
    {
        fscanf( point , "%d," , &a[i]);
    }

    // printing put the values ,but i dont get the text file values

    for(i = 0; i < 4; i++)
    {
        printf("%d\n" , a[i]);
    }
}

Windows で自分のコードブロックを使ってテストすると、

3
2
1
0
于 2013-09-16T06:45:25.947 に答える
0
#include <stdio.h>
#include <stdlib.h>

void main() {
    int a[4];
    FILE* point = fopen("test.txt", "r");

    if (NULL == point) {
        perror("File not found!");
        exit(-1);
    }

    for (int i = 0; fscanf(point, "%d%*c", &a[i]) > 0 && i < 4; i++) {
        printf("%d\n", a[i]);
    }

    fclose(point);
}

test.txt:

11234, 2234, 32345, 42542
于 2013-09-16T06:30:29.910 に答える
0

最初に、数字がテキスト ファイルに書き込まれる順序を知っておく必要があります。数字が 1 つのスペースで区切られている場合は、次のようにコードを使用できます。

for(int i=0; i<4; i++)
{
fscanf(point, "%d ", &a[i]);
}

の後にスペースを入れてください%d。数字が別々の行に書かれている場合、次のようにコードを使用できます。

 for(int i=0; i<4; i++)
{
fscanf(point, "%d\n", &a[i]);
}

以上で、これらの値を希望どおりに印刷できます。

于 2013-09-16T08:40:29.173 に答える
0

値から何を読み取っているのかを常に確認してください。ファイルから文字を読み取っている場合は問題ありません。ただし、整数を読み取りたい場合は、必ず文字として読み取り、整数に変換してください。

#include<stdio.h>
int main()
{
    char a;
    FILE *point;
    int i, b[4];
    point = fopen("test.txt", "r");
    for(i = 0; i < 4; i++) {
            a = fgetc( point); 
        b[i] = atoi(&a);              
    }
// printing put the values ,but i dont get the text file values
    for(i = 0; i < 4; i++) 
        printf("%d\n" , b[i]);  
}

これは私のテキストファイルです。

3210

これは私の出力です。

3
2
1
0
于 2013-09-16T06:41:54.793 に答える