我有2个互相交互的C函数。第一个writer函数接受一个int n并且多次写入“Hellohello”。 reader函数读取输入的内容,每50个字符插入一个换行符。
我目前面临的困境是,当我有多个字符是50的因素时,我的读者会在我不想要的时候添加一个额外的换行符。我已经尝试了多种不同的方法来解决这个问题,而我曾尝试过的任何方法都没有。我提供的是我的读者代码,没有任何我尝试过的修复程序以及问题所在的示例。
我必须使用getchar和putchar,我知道如果我不使用它们会有更简单的方法,但遗憾的是它是必须的。我非常感谢任何有关我应如何处理这个或我应该考虑的事情的帮助。
读者代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count = 0;
char c;
while (c != EOF)
{
c = getchar();
if (count == 50)
{
putchar('\n');
count = 0;
}
putchar(c);
count++;
}
}
示例输出:
[88] [cbutc1@courses2016:~/csc412]$ writer 10 | reader1
HellohelloHellohelloHellohelloHellohelloHellohello
HellohelloHellohelloHellohelloHellohelloHellohello
▒[89] [cbutc1@courses2016:~/csc412]$
编辑:清晰度
答案 0 :(得分:1)
当你读取(getchar)换行符时,你会打印换行符(putchar)。
此外,'c'应该被声明为'int''因此它足够大以正确保持EOF。
第一次通过循环并且打印“EOF”时,'c'的值未定义,请使用:
while ((c = getchar()) != EOF) { …
此外,您应该使用int main ( void ) { …
C语言确实有“类”,只有函数。
答案 1 :(得分:0)
只需更改正在检查计数的if语句,以包含对换行符的检查。这解决了正在发生的问题。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count = 0;
char c;
while (c != EOF)
{
c = getchar();
if ((count == 50) && (c != '\n'))
{
putchar('\n');
count = 0;
}
putchar(c);
count++;
}
}