Консультация № 198468
06.05.2020, 15:32
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:

У меня есть код задачи. Что нужно дописать/исправить, чтобы символы слова дописывались без пробела?
Т.е. вводим слово: live
программа пишет: live evil
но нужно так: liveevil

Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

int main(void)
{
setlocale(LC_ALL, "rus");
char str[255];
int j;
printf("Программа дописывает к слову его символы в обратном порядке.\n");
printf("Введите слово: \n");
gets(str);
printf("%s",str);
int lenth = strlen(str);
for (j=strlen(str); j>=0; j--) //ставим символы в обратном порядке
printf("%c",str[j]);
getch();
return 0;
}

Обсуждение

давно
Старший Модератор
31795
6196
06.05.2020, 15:47
общий
06.05.2020, 15:48
Адресаты:
Вы помните, что в С/С++ нумерация(индексов массивов и т.п) начинается с нуля?
str[ j ] = str[ strlen(str)] <> последнему символе введенной строки.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Студент
403303
19
06.05.2020, 15:53
общий
это ответ
Здравствуйте, niktop1!
Замените строку
for (j=strlen(str); j>=0; j--)
на следующую
for (j=strlen(str)-1; j>=0; j--)
Дело в том, что функция возвращает количество символов, но индексация начинается от 0. Поэтому индекс последнего символа в строке на 1 меньше длины строки.
Форма ответа