На приведенный ниже вопрос:
Упражнение 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
- это имя программы, а не образец ввода. Они предлагают запустить программу дважды (с результатами одного, переданного другому), и предоставить некоторые другие входные данные, ожидая, что выходные данные будут такими же, как и входные, потому что они были изменены дважды. Вы, кажется, неправильно истолковали это как ввод|
в вводе программы. - person M.M   schedule 13.10.2016