我試圖在終端中使用「echo FileName.txt | a.c
」,並將數據從文件讀取到我得到的頭文件中的數組中,但我迄今爲止的代碼只是給出我是一個無限循環。我嘗試將信息存儲在本地數組中,但結果仍然相同。使用echo讀取文件名並使用文件
main(int argc, char *argv[]) {
extern char test[];
FILE *fp;
int i = 0;
int c; // was char c; originally
if (argc == 1) {
fp = stdin;
} else {
fp = fopen (argv[1], "r");
}
while ((c = getc(fp)) != EOF) {
test[i] = c;
printf("%c", test[i]);
i++;
}
}
請注意,'a.c'通常是程序的C源代碼,而不是從C源創建的可執行文件。你可能應該用一個更具描述性的名字把'test'變成一個本地數組:'char filename [256];'。你應該確保你不會溢出數組(這意味着你必須知道它有多大)。你應該null終止字符串。當你遇到換行符時(或者如果你首先遇到EOF,你可能想停止閱讀)。你應該在使用指針之前檢查'fopen()'是否工作;用戶在混淆文件名時出了名。 –
@JonathanLeffler:他使用'test'來存儲文件的內容,而不是文件名。看到我的答案。 –