2

我正在尝试从 duom.txt 文件中读取文本并将每个字符存储到数组中。但我没有得到正确的答案。我的代码有什么问题?

# include <stdio.h>
# include <stdlib.h>
int main()
{
FILE *in;
char ch,str[100],cw;
int j,i = 0;

in=fopen("duom.txt","r");


if(in){
   while(!feof(in)){
   ch=getc(in);
   str[i] = ch;
   i++;
}
}

for(j=0;j<i;j++){
             printf("%c",str[i]);
}
printf("\n");
  fclose(in);


   system("pause");
return 0;
}

duom.txt 文件:

My name is Lukas
4

4 回答 4

1

您的程序中有一个小错字。

for(j=0;j<i;j++){
     printf("%c",str[j]); //str[j] instead of str[i]
于 2013-02-16T15:29:17.923 回答
1

你应该把j而不是i放在打印循环中:

for(j=0;j<i;j++){
         printf("%c",str[i]); // <-- here, it must be `str[j]`
}

这就是为什么你应该总是使用有意义的变量名!

于 2013-02-16T15:27:56.253 回答
1
  1. fgetc() 返回intso 类型的chshould be int

  2. feof() 告诉您是否已阅读文件末尾。这意味着您的 while 循环将比预期多执行一次。

于 2013-02-16T15:23:23.363 回答
0

代码中有一个小错误是

for(j=0;j<i;j++){
         printf("%c",str[i]); // <-- here, it must be `str[j]`
}

变量的变化导致程序中的灾难,所以编辑它并尝试

于 2013-08-07T19:48:20.767 回答