iri*_*ick 3 c arrays malloc char
我正在制作加载小文本文件的ac程序.我将文本文件的读取内容存储在char数组中.这是加载文件的函数.
void load_text_file(char* filename) {
FILE *fp;
char *buf = malloc(255 * sizeof(char));
if (!buf) return NULL;
fp = fopen(filename, "r");
fgets(buf, 255, (FILE*)fp);
int i;
for(i=0;i<255;i++) {
printf("%d - %c\n", i, buf[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
当for循环打印输出时,会发生这种情况. (这是输出的缩短版本,我不想在这个问题中放入所有255个字符.)
0 - H
1 - e
2 - l
3 - l
4 - o
5 -
6 - W
7 - o
8 - r
9 - l
10 - d
11 - !
//Random chars past this point
12 -
13 -
14 - „
15 -
16 - „
//etc... etc... etc...
96 - Å
97 -
98 -
99 - Å
100 - å
101 - è
102 -
//etc... etc... etc...
//all the way up to 255 chars
Run Code Online (Sandbox Code Playgroud)
我不确定是什么导致了这一点.
我想知道导致这种情况的原因以及如何解决这个问题.
你应该打印你buf的:
printf("%s\n", buf);
Run Code Online (Sandbox Code Playgroud)
你看到的垃圾是未初始化的RAM内存分配给您的buf使用malloc,而不是由触动fgets.