테디

테디

테디테디· 5년

질문문자 역순 출력

#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 라고 출력됩니다ㅠ 어디가 잘못된 걸까요?
1.5K
1
1
0
kimho
kimho·2020-08-27
코드를 실행했을 때 input에 들어갈 값을 입력하고 엔터를 치면서 input에 마지막 "엔터" 값도 들어갔기 때문입니다. 예를 들어 "abcde"라고 치셨다면 "abcde\n"으로 마지막에 엔터 값이 들어간 상태입니다. 따라서 뒤에서 부터 값을 가져올 때 처음에 \n 문...
테디테디· 5년

질문Run-Time Check Failure #2 예외발생했는데 어디가 잘못된 건지 모르겠습니다.

#define CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(void) { int apt[10][5]; int empty = 0; int i, j; for (i = 1; i <= 10; i++) { for (j = 1; j <= 5; j++) { apt[i][j] = i % j; if (apt[i][j] == 0) { empty++; } } } printf("%d\n", empty); for (i = 1; i <= 10; i++) { for (j = 1; j <= 5; j++) { printf("%d\t", apt[i][j]); } printf("\n"); } } 실행도 맞게 되고 실행결과도 맞게 나오는데 예외가 발생했다고 뜹니다ㅠ Run-Time Check Failure #2 - Stack around the variable &#39;apt&#39; was corrupted. 위의 문구가 뜨면서 예외가 발생했다고 뜨는데 인터넷에 찾아보니 배열의 크기가 안 맞아서 생기는 오류같은데 어디가 잘못된건지 잘 모르겠습니다. 알려주시면 감사합니다ㅠㅠ
9.3K
2
0
kimho
kimho·2020-08-27
배열은 apt[10][5]로 선언하였는데  질문자님의 for문에서는 i=1부터 시작해서 i <=10 조건으로 루프를 돌기때문에 배열이 맞지 않아서 오류가 발생합니다.   예를 들어 apt[10]은 apt[0]부터 apt[9]까지 채울 수 있는데 i가 1부터 시작하게 되면 apt[1]부터 apt[10]까지 채우는 시도를 하기 ...