为什么我从文件中读取后会得到奇怪的数字?

时间:2013-12-16 22:04:51

标签: c file-io

从文件中读取后我得到了奇怪的值(我应该是最多100但我得到更多),如果有人会解释何时使用& * **在指针中简单说明为什么我的英语在编程方面不是很好我会很感激

该程序应该从文件中读取单词,如果单词中有数字,则将其更改为该单词的第一个字母。如果您对如何更改文件读取有任何建议,我也会很感激。我是C的新手(在学校我做了C ++,但非常基本的水平)

# include <stdio.h>
# define  MAX_LEN  100
int File_reading();
int main()
{char buffer;
  File_reading();
}

int File_reading(  )
{
   FILE *stream;
   char buffer[MAX_LEN + 1];
   int i, ch;

   stream = fopen("data.txt","r");

   for (i = 0; (i < (MAX_LEN+1));i++)
         {
        if (((ch = fgetc(stream)) != EOF) && (ch != '\n'))
            {
            buffer[i] = ch;
            }
         }
   buffer[i] = '\0';

   if (fclose(stream))
      perror("fclose error");
for (i=0;(i<(MAX_LEN+1));i++){

   printf("%c \n", buffer[i]);
   }
}

1 个答案:

答案 0 :(得分:2)

当文件结束时,你没有停止循环,你超越了数组绑定!这太可怕了。修复循环,如下所示:

char buffer[MAX_LEN + 1];
size_t i;

for (i = 0; i != MAX_LEN; ++i)
{
    int c = fgetc(stream);
    if (c == EOF) { break; }
    buffer[i] = c;
}

buffer[i] = '\0';