我想知道为什么我的程序无法将我的.txt文件的数字输入到我的数组中。它读取它们但我无法将它们输入到数组中供以后使用。 任何人都可以帮助我更好地理解c中读写文件的管理,请我在这个主题上有新的知识,我知道我应该使用int而不是chars,因为我的.txt文件只包含数字。但是我认为只有fgets等功能才能用于字符。
#include <stdio.h>
int main()
{
FILE* file;
char name[10] = "100.txt";
char line[10];
int n;
char i[5];
file = fopen(name, "rt");
if (file == NULL)
{
printf("There is no such file!\n");
return 0;
}
for (n=0; n < 100; n++){
fgets(line, 5, file);
//puts(line);
i[n]=line;
puts(i[n]);
}
fclose(file);
return 0;
}
答案 0 :(得分:1)
如果你切换到fscanf你可以使用int而不是char,并且鉴于你正在解析包含数字的文本文件,它更有意义。假设您的100.txt有一个由空格分隔的100个数字,这应该有效:
int main(int argc, char* argv[])
{
FILE* file;
char name[10] = "100.txt";
char line[10];
int n;
int numberArray[100];
file = fopen(name, "rt");
if (file == NULL)
{
printf("There is no such file!\n");
return 0;
}
for (n=0; n < 100; n++){
fscanf(file, "%d", &numberArray[n]);
}
fclose(file);
return 0;
}
以下是fscanf解释的链接。
编辑:
使用fscanf还有另一种更优雅的解决方案:
while (fscanf(file,"%d",&numberArray[n++]) == 1);
以这种方式,只要有数字(即直到EOF),你就会遍历文本文件。如果文本文件中的数字计数大于为数组分配的空间,则程序可能会崩溃时要小心。
写回文件:
FILE* fp = fopen( "out_file.txt", "w" ); // Open file for writing
int arrNumSize = sizeof(numberArray) / sizeof(int);
for (int i = 0; i < arrNumSize; i++)
{
fprintf(fp, "%d", numberArray[i] );
}
fclose(fp);