#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
int maxlen, len, i;
char * str;
// 문자열의 최대 길이 입력받기
printf("문자열의 최대길이 입력: ");
scanf("%d", &maxlen);
getchar();
// 입력받은 길이만큼 메모리 할당 (+1은 null문자를 위한 공간)
str = (char*)malloc(sizeof(char) * (maxlen + 1));
// 문자열 입력받기
printf("문자열 입력: ");
fgets(str, maxlen + 1, stdin);
// 입력받은 문자열의 마지막 개행 문자 제거
str[strlen(str) - 1] = 0;
len = strlen(str);
// 문자열을 뒤에서부터 탐색하며 단어를 역순으로 출력
for(i = len; i > 0; i--) {
if(str[i] == ' ') {
printf("%s ", &str[i + 1]);
str[i] = 0; // 공백 문자를 null 문자로 대체하여 단어를 분리
}
}
// 마지막 단어 출력
printf("%s ", &str[0]);
// 할당한 메모리 해제
free(str);
return 0;
}
여기서... for문 단어 역순이 왜 저코드로 기능하는지 이해를 못하겠습니다..ㅠㅠ 그리고 ' ' 이 연산자? 무슨뜻인지...
이거 작동하긴 함? 안할거같은데?
ㅜ
아 ㅇㅇ 역순으로 돌면서 공백 만나면 걔를 엔드포인트로 새로 지정해주고 엔드포인트 +1 을 시작주소로 넘겨주면서 문자열을 역순으로 잘라서 출력해주는거 같음
감사합니다!!!