1

这是我的函数,问题是它永远不会停止在命令行中获取输入。
我不知道在哪里放置return 0.

int my_rot13(int c) {
    if ('a' <= tolower(c) && tolower(c) <= 'z')
        return tolower(c)+13 <= 'z' ? c+13 : c-13;
    return c;
}

int main() {

  int k, c;
  char *p;

  if (argc < 2) {
    while ((c = getc(stdin)) != EOF) {
      putchar(my_rot13(c));  
    }
    return 0; 
  }

  for (k = 1; k < argc; k++) {
    for (p = argv[k]; *p != '\0'; p++) {
      putchar(my_rot13(*p));
    }
    putchar(' ');
  }
  putchar('\n');

  return 0;
}

如果我像这样传递标准输入./a.out "hey",它可以退出程序。

但是当我进入用户输入模式时,我无法摆脱这个功能。

4

2 回答 2

1

当您手动输入输入时,您需要将EOF字符发送到。getc()您可以在 Linux 上使用 Ctrl-D 执行此操作,在 Windows 上使用 Ctrl-Z 执行此操作。另一种选择是让您针对换行符('\n')进行测试。

于 2013-10-30T22:27:00.717 回答
0

如果您从标准输入捕获,则使用'\n'而不是EOF.

于 2013-10-30T22:26:42.690 回答