Упражнение 1.19. Напишите функцию reverse(s), которая переписывает свой строковый аргумент s в обратном порядке. Воспользуйтесь ею для написания программы, которая бы выполняла такое обращение над каждой строкой входного потока по очереди.
/* программа, переписывающая строку в обратном порядке */
#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длина строки в потоке */
void reverse(char s[]);
int main()
{
char line[MAXLINE]; /* текущая введенная строка */
char c;
int i;
i = 0;
while ((c = getchar()) != EOF) {
line[i] = c;
++i;
if (c == '\n'){
line[i] = '\0';
i = 0;
reverse(line);
printf("%s", line);
}
}
return 0;
}
void reverse(char s[])
{
int i, j, n;
char temp[MAXLINE];
j = 0;
i = 0;
while (s[j] != '\n') /* считаем количество символов в строке */
++j;
n = j;
/* переписываем строку в обратном порядке в вспомогательный массив */
for (i = 0; j != 0; ++i) {
temp[j - 1] = s[i];
--j;
}
/* переписываем строку в основной массив */
for (i = 0; n != 0; ++i) {
s[i] = temp[i];
--n;
}
}
Результат выполнения:
|