我想知道为什么我的程序无法将我的.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;
}
如果切换到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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句