这是我的功能,问题是
它永远不会停止在命令行中获取输入。
我无法弄清楚放置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"
之类的标准输入,则可以退出程序。
但是当我进入用户输入模式时 我无法摆脱这个功能。
答案 0 :(得分:1)
当您手动输入输入时,需要将EOF字符发送到getc()
。您可以使用Ctrl-D在Linux上执行此操作,使用Ctrl-Z在Windows上执行此操作。另一种选择是让你测试换行符('\ n')。
答案 1 :(得分:0)
如果您从标准输入中捕获,请使用'\n'
代替EOF
。