C数组中的C随机字符

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)

我不确定是什么导致了这一点.
我想知道导致这种情况的原因以及如何解决这个问题.

Eug*_*sca 5

你应该打印你buf的:

printf("%s\n", buf);
Run Code Online (Sandbox Code Playgroud)

你看到的垃圾是未初始化的RAM内存分配给您的buf使用malloc,而不是由触动fgets.