Как вывести результат функции в main?

Есть код, который выводит строки в обратном порядке :

int zerkalo (char *s){
        int len = strlen(s)-1;
     printf("вы ввели: ");
char*t = s + len;
for (;t>=s;t--) printf("%c",*t);
return 0;
}

 int main () {
     setlocale(0,"");
     char vvod [50]={};
     printf("Введите слово (слова, предложение)\n");
     scanf("%50[^\n]s",vvod);
 zerkalo(vvod);
   printf("\n");
      return 0;
 }

Вопрос в следующем: как вывести уже измененный массив vvod, не с помощью printf("%c",*t) в функции zerkalo, а в самой функции main?

Ведь в функции zerkalo я работаю с указателями, значит после отработки данной функции, vvod в main должен по идее имеет измененное значение. Или я ошибаюсь?


Ответы (1 шт):

Автор решения: Harry

Каждая функция должна заниматься своим делом. Одна разворачивает строку, другая выводит...

#include <stdio.h>

char* reverse(char* s)
{
    if (s == NULL) return s;
    for(char *b = s, *e = s + strlen(s) - 1;
        b < e; ++b, --e)
    {
        char t = *b; *b = *e; *e = t;
    }
    return s;
}
int main ()
{
    char vvod[50];
    printf("Введите слово (слова, предложение): ");
    scanf("%50[^\n]s",vvod);
    printf("%s\n", reverse(vvod));
}
→ Ссылка