如何读取文本文件的内容并将其放入数组中?例如,我的文本文件中有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
函数专门解决它。
答案 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]);
}
就是这样,你可以按照自己的意愿打印这些值。