数组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
答案 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;在循环之前,因为它会将其初始化为零,这就是为什么只打印单个字符