воскресенье, 19 января 2014 г.

Упражнение 1.19.

Перевод: Напишите функцию reverse(s), размещающую символы в строке s в обратном порядке. Примените ее при написании программы, которая каждую вводимую строку располагает в обратном порядке.

Оригинал: Write a function reverse(s) that reverses the character string s. Use it to write a program that reverses its input a line at a time.
$ vim ex_1_19.c
#include <stdio.h>
#define MAXLINE 1000 /* максимальный размер вводимой строки */

int getstr(char line[], int maxline);
void reverse(char mass[]);

int main(void)
{
        int len;
        char line[MAXLINE];

        while((len = getstr(line, MAXLINE)) > 0)
        {
                reverse(line);
                printf("\b%s\n", line);
        }

        return 0;
}

/* getstr: читает строку в s, возвращает длину */
int getstr(char s[],int lim)
{
        int c, i;
        for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
                s[i] = c;
        if (c == '\n') {
                s[i] = c;
                ++i;
        }
        s[i] = '\0';
        return i;
}

/* reverse: располагает строку в обратном порядке */
void reverse(char mass[])
{
        int i, j;
        int temp;

        for (j = 0; mass[j] != '\0'; ++j) /* Получаем размер массива */
                ;

        for (i = 0; i < j; ++i)
        {
                temp = mass[i];
                mass[i] = mass[j - 1];
                mass[j - 1] = temp;
                --j;
        }

}
$ cc -g -O0 -Wall -o a.out ex_1_19.c
$ ./a.out
1
1
12
21
123
321
1234
4321
12345
54321
Hello, world!
!dlrow ,olleH
<Ctrl>+<D>

Комментариев нет:

Отправить комментарий