【发布时间】:2015-05-04 20:48:41
【问题描述】:
我正在尝试读取不同文件中的所有字符。例如,通过调用myprogram < file1 file2。
我的方法如下:
void do_read(FILE * file){
char ch;
while (ch != EOF) {
ch = getc(file);
printf("%c\n", ch);
}
int main(int argc, char * argv[])
{
int i = 1;
FILE * fp = NULL;
if (argc < 1) {
//Error. No file given
printf("Error");
}
else {
// cycle through all files in command line arguments and read them
for (i=1; i < argc; i++) {
if ((fp = fopen(argv[i], "r")) == NULL) {
printf("Failed to open file.\n");
}
else {
do_read(fp);
fclose(fp);
}
}
}
return 0;
}
但每当我尝试以myprogram < file1(只有1个参数)运行它时,它不会输出任何内容。甚至没有printf("Error")。
谁能帮我修复我的代码?我究竟做错了什么?有更好的方法吗?
非常感谢您提前提供的帮助!
【问题讨论】:
-
第一个参数是程序名,你永远不会有
argc < 1。 -
感谢您的观察。将更正我的代码!
-
加上
char ch; while (ch != EOF) {,ch还没有定义,那么你希望while (ch != EOF)做什么?