c - 重定向到文件时输出会变得困惑

标签 c

这是我的代码,它正在执行困惑的打印。当您将其显示到屏幕(终端)时,输出很好。不幸的是,当您将其重定向到文本文件时,它会变得困惑。它显示空字符 (^@) 和查询字符 (^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/

相关文章:

c - 错误 : variable-sized array may not be initialized

c - 如何连接多字节 LPSTR 字符串?

C 奇怪的错误与 strcpy 甚至更奇怪的解决方案

剔除适用于从 View 投影矩阵中提取平面,但不适用于投影矩阵

C 切割 char 数组并从 socket 中保存二进制数据

c - 在 C 中从文件读取/写入结构体

c - 我在这个程序中犯了什么错误,它将通过运行时错误?

c - 为什么当我向数组添加第七个字符时,我的代码会终止?

c - 如何在c中将字符串转换为long long

c - 如何在此代码中使用函数 toupper() ?