我有这个简单的C程序,它从标准输入读取字符,并显示一个带有编号行和列的表,其中包含我们编写的字符。 代码是:
#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
然后它读取我用键盘输入的字符。它工作正常。 当我决定从txt文件中读取字符时,会出现问题。所以我用记事本创建了一个txt文件(在program.exe的同一个文件夹中),我在里面写了几个句子。然后在控制台中我执行:
program.exe<file.txt
但我收到的输出是“没有有效的字符输入”,好像该程序读取的第一个字符是EOF。
有什么想法吗?
谢谢。
解决方案:我刚刚发现了问题所在。是Comodo Internet Security阻止程序从txt文件中读取字符。实际上Comodo正在沙盒化该程序。因此,将程序放入“安全文件”列表后,一切都按照它应该运行。 我希望这个解决方案可以帮助任何有类似问题的人。
答案 0 :(得分:5)
解决方案:我刚刚发现了问题所在。是Comodo Internet Security阻止程序从txt文件中读取字符。实际上Comodo正在沙盒化该程序。因此,将程序放入“安全文件”列表后,一切都按照它应该运行。