數組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
'var'不包含'\ 0'結束,第二循環會隨機停止,否則程序甚至可能會崩潰。如果您正在閱讀單個字符,請不要使用'fscanf',而是使用'fgetc'。使用'fgets'來讀取整行然後解析它總是更好。 – Pablo
另一件我不喜歡的事情是,你認爲文件'log.txt'包含不超過512字節。假設這樣的事情是危險的,一般來說,你應該把用戶輸入(也意味着文件)視爲不可信。你會避免這種痛苦的錯誤。 – Pablo
@Pablo想象一下log.txt的大小是未知的。在這種情況下,我只能給數組分配一個最大大小。 –