Как в C можно перевернуть слова?

Рейтинг: 0Ответов: 2Опубликовано: 28.02.2015

Пример: слово Hello будет написана olleH.

Пытаюсь одним array бежать с начала, а другим - с конца и вставлять буквы.

Мой код:

#include <stdio.h>
#include <conio.h>
#include <string.h>

void mahaph(char str[]){

    int total = strlen(str);

    char temp[10];

    for (int i = total, int j = 0; i <= 0 j > total; i--, j++){

        temp[j] = str[i];

    }

    printf("%s\n", temp[i]);
}

void main(){

    char str[] = "Hello";

}

Ответы

▲ 1Принят

Учитывая тот факт, что в C нет строк как типа данных, а есть массивы символов

char myString[10]

последним элементом которого всегда является '\0' - нулевой символ, используйте то, что применимо к массивам.

int len = sizeof(str)-1; // длина строки/размер массива за вычетом '\0'
// учтите, что для русского текста каждый char весит 2 байта.
printf("%i\t%c\n",i, str[i]); // печать содержимого в цикле

В самом грубом виде ваша задача выглядит так:

#include <stdio.h>

void main() {
  char str[]="hello";
  char temp[6];
  int len = sizeof(str)-1;
  int i = 0;
  for (i=0; i<len;i++) {
    temp[len-i-1] = str[i];
    printf("%d\t%c\t%d\t%c\n", i, str[i], len-i-1, temp[len-i-1]);
  }
  temp[len+1] = '\0';
  printf ("%s, %d\n", str, len);
  printf ("%s, %d\n", temp, sizeof(temp)-1);
▲ 2
#include <stdio.h>  // putchar

void rev(const char* const c)
{
    if (*c)
    {
        rev(c + 1);
        putchar(*c);
    }
}

int main(void)
{
    rev("Hello!");
    return 0;
}