如果使用任何参数,程序将按预期运行
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFSIZE 10000
int main(int argc, char *argv[]) {
FILE *fp;
char buff[BUFFSIZE];
int currentFile = (argc > 1 ? 1 : 0);
while (currentFile < argc) {
if (argc > 1) {
fp = fopen(argv[currentFile], "rb");
if (fp == NULL) {
fprintf(stderr, "%s: %s: No such file or Directory", argv[0],
argv[currentFile]);
exit(1);
}
}
while (fgets(buff, BUFFSIZE, (fp == NULL ? stdin : fp))) {
int len = strlen(buff);
buff[len - 1] = '\0';
fprintf(stdout, "%s\n", buff);
}
fclose(fp);
currentFile++;
}
return 0;
}
我相信这个问题在某种程度上与 NULL 被传递到 fgets 有关,但我缺乏 c 经验不允许我正确诊断问题。
通过向
FILE *fp
添加适当的初始化来修复。
谢谢你们,伙计们。