Как правильно вывести массив символов?

Нужно введенную строку записать наоборот, вроде сделал все как надо, но проблема в том, что вместо массива символов программа выводит просто пустую строку. Если выводить символ по отдельности, то все будет нормально, но мне нужно перенести результат в другой массив символов.
Пробовал через функцию cout, puts.
Если в аргумент указать str, то выведет введенное пользователем слово.
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;

int main() {
	char str[100];
	char tmp[100];
	puts("Enter some characters: "); gets(str);
	for(int i = strlen(str), j = 0; j < strlen(str); i--, j++) {
		tmp[j] = str[i];
	}
	puts(tmp);
}
  • Вопрос задан
  • 415 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
проблема в том, что вместо массива символов программа выводит просто пустую строку.

программа выводит пустую строку, потому что в tmp -- пустая строка. Потому что i = strlen(str) помещает в i индекс 0-терминатора строки str, а не последнего символа перед ним. И в конце строки tmp сейчас нет 0-терминатора, так что puts(tmp) выведет мусор после перевёрнутой строки, если поправить инициализацию i.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы