【发布时间】:2016-10-13 01:39:14
【问题描述】:
对于下面的question,
练习 12336 - 从程序的标准输入中一次读取一个字符的普通文本,并将其打印出来,每行从左到右颠倒。阅读直到遇到数据结束`
您可能希望通过键入`来测试程序
prog5rev | prog5rev查看是否重新创建了原始输入的精确副本。要将字符读取到数据末尾,请使用循环,例如`
char ch; while( ch = getchar(), ch >= 0 ) /* ch < 0 indicates end-of-data */ or char ch; while( scanf( "%c", &ch ) == 1 ) /* one character read */
这是我的解决方案:
#include <stdio.h>
void f(char *);
int main(void)
{
char ch = getchar();
f(&ch);
return 0;
}
void f(char *ch){
if(*ch < 0)
return;
else{
char character = getchar();
f(&character);
}
putchar(*ch);
}
输入:
abc | abc
输出:
cba | cba
问题:
问题说:print it with each line reversed from left to right.
这个解决方案正确吗?
【问题讨论】:
-
在规定中,我认为
prog5rev是程序的名称,而不是样本输入。他们建议运行程序两次(将结果通过管道传输到另一个),并提供一些其他输入,并期望输出与输入相同,因为它被反转了两次。您似乎将其误解为在程序输入中键入|的意思。