这是我的代码,它正在执行困惑的打印。当您将其显示到屏幕(终端)时,输出很好。不幸的是,当您将其重定向到文本文件时,它会变得困惑。它显示空字符 (^@) 和查询字符 (^E)。我必须使用这样的 for 循环,否则我的输出会变得困惑。我无法使用 %s 选项,否则我的输出将不会符合我需要的方式。
FILE *input;
char line[80] = {0};
while(fgets(line, 80, input) != NULL)
{
if((int)line[0] == 46)
{
//printf("You have a period \n");
for(i = 31; i < 80; i++)
{
printf("%c", line[i]);
}
//printf(" ------------------------\n");
memset(line, 0, 80);
comment_flag = 1;
}
}
这就是我所说的重定向的意思。
gcc *.c
./a.out > text_file
最佳答案
#include <ctype.h>
并尝试
if (isprint((unsigned char)line[i]) || isspace((unsigned char)line[i]))
printf("%c", line[i]);
我的条件中的条件仅保留可打印字符(isprint()
)和空格字符('\n'
、'\t'
,...)。其他字符('\0'
、'\x05'
、...)在输出时将被忽略。 – PMG
关于c - 重定向到文件时输出会变得困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833192/