作家插入不需要的换行符

时间:2016-02-14 05:21:32

标签: c

我有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]$

编辑:清晰度

2 个答案:

答案 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++;
  }
}