在我的项目中我使用数组而不是指针。我的目的是将text.file中的所有字符逐个复制到数组中。我从互联网上找到了一些例子,这个网站,但没有一个对我有用。 认为input1.txt是“abcd”我想要这些input1 [0] = a,input1 [1] = b等。
main ()
{
FILE *f1 = fopen("input1.txt", "r");
int i;
fseek(f1, 0, SEEK_END);
int inputsize = ftell(f1); //its about text's size
char input1[inputsize];
for(i = 0; i < inputsize; i++)
{
fscanf(f1, "%c", &input1[i]);
}
printf("%c ", input1[3]);
getchar();
}
当我运行此代码时,它不会打印“d”,而是打印“6”。为什么会这样?我该怎么办?谢谢你的帮助
答案 0 :(得分:4)
您寻找文件的末尾以获取它的大小,但在开始实际阅读之前不要再次回到文件的开头。
在循环之前插入:
fseek(f1,0,SEEK_SET);
将您的代码粘贴到我的编译器中,并在我的机器上进行了此修改
答案 1 :(得分:2)
你也可以使用函数倒带(FILE *)而不是再次执行fseek()。
值得注意的是,您应该使用变量分配数组,在这种情况下这可能是一个坏主意(特别是当您可以读取比4个字符更大的文件时)。