【发布时间】:2021-12-24 09:02:50
【问题描述】:
我正在尝试制作读取 .bin 文件并找到“人造字符”的程序。我没有走多远,因为每次我尝试打印找到的字符的缓冲区时,它都会打印两次,或者打印我不应该打印的那些。我发现只有 fflush(stdout) 打印一次。现在我试图将它打印为字符串 printf(%s, buffer) 并且我试图用 for() 来完成它(没有工作)。现在我不知道该怎么办。
int main(int argc, char** argv) {
int l = 3;
if(argc >= 2){
l = atoi(argv[1]);
}
char* buffer = (char*) malloc((l + 1) * sizeof(char));
int ch;
int i = 0;
while ((ch=getchar()) != EOF) {
if (i == l) {
buffer[i] = '\0';
printf("%s", buffer);
i = 0;
}
if (ch >= ' ' && ch <= '~') {
buffer[i] = putchar(ch);
i++;
} else {
printf("\n");
i = 0;
}
}
return 0;
}
【问题讨论】:
-
buffer[i] = putchar(ch);- 你的意思可能是buffer[i] = ch;