我正在尝试为任务实现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);
}
我已经搜寻了几天,但由于找不到任何有用的结果,我似乎无法弄清楚正确的查询应该是什么。
try initializing your charBuffer:
char charBuffer[2]={0};