C – Windowsinputredirect与getchar不工作?

我有这个简单的C程序,它从标准input中读取字符,并显示一个带有编号的行和列的表格,里面是我们写的字符。 代码是:

#include <stdio.h> #define COLS 6 #define WIDTH 5 int main(int argc, char *argv[]){ char buffer[COLS]={0}; int c; int cols; for(cols=0;cols<COLS && (c=getchar())!=EOF;cols++){ buffer[cols]=c; } if(cols!=0){ int a; printf("%-*s",WIDTH,""); for(a=0;a<cols;a++){ (cols!=(a+1)) ? printf("%-*d",WIDTH,(a+1)) : printf("%-*d\n",WIDTH,(a+1)); } printf("%-*d",WIDTH,1); for(a=0;a<cols;a++){ (cols!=(a+1)) ? printf("%-*c",WIDTH,buffer[a]) : printf("%-*c\n",WIDTH,buffer[a]); } cols=0; int rows=2; while((c=getchar())!=EOF){ if(cols==0){ printf("%-*d%-*c",WIDTH,rows,WIDTH,c); cols++; } else{ if(COLS!=(cols+1)){ printf("%-*c%",WIDTH,c); cols++; } else{ printf("%-*c\n",WIDTH,c); cols=0; rows++; } } } printf("End-Of-File\n"); } else{ printf("No valid characters input\n"); } return 0; } 

我在Windows XP上使用cc编译程序,如果在Windows控制台(cmd)中使用:

 program.exe 

然后它读取我用键盘input的字符。 它工作正常。 当我决定要从txt文件中读取字符时,就会出现问题。 所以我用记事本创build了一个txt文件(在program.exe的同一个文件夹中),我在里面写了几个句子。 然后在控制台中执行:

 program.exe<file.txt 

但我收到的输出是“没有有效的字符input”,就好像程序读取的第一个字符是EOF。

有任何想法吗?

谢谢。

解决scheme:我刚刚发现了什么问题。 Comodo Internet Security阻止程序从txt文件中读取字符。 其实Comodo是沙盒程序。 所以在将程序放入“安全文件”列表之后,所有的工作都应该如此。 我希望这个解决scheme能够帮助任何有类似问题的人。

解决方案 :我刚刚发现了什么问题。 Comodo Internet Security阻止程序从txt文件中读取字符。 其实Comodo是沙盒程序。 所以在将程序放入“安全文件”列表之后,所有的工作都应该如此。