从File读取后发出打印char数组的问题

时间:2017-07-02 18:11:24

标签: c arrays gcc

数组var [i]从log.txt中读取所有驱动器的名称并将其打印在屏幕上。之后,再次打印数组,直到达到'\ 0',只打印第一个字符。不知道为什么?

FILE *fp;
char  var[512];
i = 0;

if (fp = fopen("log.txt", "r+")) {
    while (fscanf(fp, "%c", &var[i]) != EOF) {
        printf("%c", var[i]);    -----------> Works Fine
        i++;
    }
}

fclose(fp);
printf("\n\n");

i = 0;
while(var[i] != '\0') {
    printf("%c",var[i]);        ------------------> Problem
    i++;
}

输出:

■N a m e
 C :
 D :
 E :
 F :
 G :


  ■N         -------------> Problem

2 个答案:

答案 0 :(得分:1)

你永远不会写'\0',而while - 循环正在寻找。 所以写

...
var[i] = '\0';
fclose(fp);
...

在你读入字符的第一个循环之后,它应该可以工作。

或者(或另外),您可以初始化您的阵列,使其预先填充"使用0,例如:

char  var[512] = { 0 };  // will set all 512 characters to 0.

答案 1 :(得分:-1)

你必须删除i = 0;在循环之前,因为它会将其初始化为零,这就是为什么只打印单个字符