从文件中读取后我得到了奇怪的值(我应该是最多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]);
}
}
答案 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';