将输入文件读入数组

时间:2013-09-16 06:18:14

标签: c

如何读取文本文件的内容并将其放入数组中?例如,我的文本文件中有3个,2个,1个,我想读取文件并将值存储在数组中。我正在使用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函数专门解决它。

5 个答案:

答案 0 :(得分:1)

您可以找到答案here

#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);
}

答案 1 :(得分:1)

fscanf用于从流中读取数据并根据参数格式将它们存储到指定位置。您可以获得参考here

所以你必须检查文件中的值的格式,例如,你在文件中有“3,2,1,0”,你应该将格式设置为“%d”,因为每个值都被遵循a','。

#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

答案 2 :(得分: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

答案 3 :(得分: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

答案 4 :(得分:0)

首先你应该知道数字在文本文件中的写入顺序,如果它们用一个空格分隔,你可以像这样使用你的代码:

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]);
}

就是这样,你可以按照自己的意愿打印这些值。