【发布时间】:2010-09-19 17:41:38
【问题描述】:
在使用 GCC 编译后,我正在尝试在 Windows 7(64 位,如果重要的话)上运行此代码。如果我将 bufsize 声明为 int,则程序会冻结,并且 Windows 会通知我它已停止工作。如果我使用 #define bufsize 123 它工作正常,如果我自己用数字替换 bufsize ,它工作正常。我在这里错过了什么?
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或其他表达式的形式完成。