如何在fgetc中的C字符串中存储重复的空字符?

我正在尝试为任务实现LZW压缩机。到目前为止,所有内容都适用于文本,但是如果输入文件中包含很长的空字符,我将浪费很多时间。

刚开始时,我将传入的char作为int存储以检查EOF,然后将其转换为char以连接到我的增强字符串以进行字典比较。我已经在每个文件之后打印出字典,并发现长期使用零,字典条目为空字符串。

我认为发生的事情是它需要一串零,并使它成为单个零。不是所需的值。我需要把所有那些零都排除掉。

我制作了一个最小的可行代码来显示该错误,并发现它恰好在转换阶段发生。如何建立对空字符的检查,以便可以将其替换为可以存储在字符串中的其他内容?

#include <stdio.h>
#include <string.h>

int main (){
    int nextChar;
    char augmented[256] = "\0";
    while ((nextChar = fgetc(stdin) != EOF)){
        char charBuffer[2];
        sprintf(charBuffer, "%c", nextChar);
        strcat(augmented, charBuffer);
    }
    printf("%s",augmented);
}

我已经搜寻了几天,但由于找不到任何有用的结果,我似乎无法弄清楚正确的查询应该是什么。

评论