我想在Windows 7(64位,如果它很重要)編譯它與GCC後運行此代碼。如果我將bufsize聲明爲int,則程序會凍結,Windows會通知我它已停止工作。如果我使用 #define bufsize 123 它工作正常,如果我用自己的數字替換bufsize,它工作正常。我在這裏錯過了什麼?奇怪的fgets()問題
int main(int argc, char* argv[]) {
char* filename = argv[1];
FILE* problem = fopen(filename, "r");
if (!problem) {
printf("File doesn't exist\n");
exit(1);
}
char* line;
while (fgets(line, bufsize, problem) != NULL) {
printf(line);
}
return 0;
}
最大的概念性錯誤,沒有人會指出你的是,你不不需要bufsize變量。您必須將緩衝區大小傳遞給'fgets',但這通常是以sizeof buffer或其他表達式的形式完成的。 – 2010-09-19 18:42:25