문자 역순 출력
#define CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char input[50];
printf("Input : ");
int i = 0;
int arr_size;
while (i < 50) {
scanf_s("%c", &input[i], sizeof(char));
if (input[i] == '\n') {
arr_size = i;
break;
}
i++;
}
printf("Output : ");
for (int i = 0; i < arr_size; i++) {
printf("%c", input[(arr_size - i)]);
}
return 0;
}
Input : hello
Output : olleh 가 나와야 하는데
Input : hello
Output :
olle
라고 출력됩니다ㅠ 어디가 잘못된 걸까요?
코드를 실행했을 때
input에 들어갈 값을 입력하고 엔터를 치면서 input에 마지막 "엔터" 값도 들어갔기 때문입니다.
예를 들어 "abcde"라고 치셨다면 "abcde\n"으로 마지막에 엔터 값이 들어간 상태입니다.
따라서 뒤에서 부터 값을 가져올 때 처음에 \n 문자부터 가져오기 때문에 마지막 문자 a를 출력하지 못하게 됩니다.
즉, 입력 값의 \n를 건너뛰기 위해 for문의 i를 0이 아니라 1부터 시작하도록
아래와 같이 수정하면 정상적으로 출력됩니다.