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

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

就是这样,您可以根据需要打印这些值。

于 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 回答
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);
}

测试.txt:

11234, 2234, 32345, 42542
于 2013-09-16T06:30:29.910 回答