#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
int maxlen, len, i;
char* str;
printf("문자열의 최대 길이 입력: ");
scanf("%d", &maxlen);
getchar(); // 여기가 잘 이해가 안갑니다.
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;
}
}
printf("%s
", &str[0]);
free(str);
return 0;
}
굵은 글자부분이 \n을 삭제하기 위해서 쓴거라고 했는데, 이해가 잘 가지 않습니다.
저것을 지우고 실행시키면 다다음줄의 "문자열 입력" 의 출력 없이 바로 프로그램이 종료됩니다.
도와주세요.
Getchar api에 대한것은 잘모른다만 아마 스트림의 일종으로 cpu가 브레이크를 거는 함수같다. getchar은 문자 하나를 입력받는다. 그러므로 문자를 입력하기 전까지 프로세스가 유휴 상태에 들어감.
ส
윗 고정닉이 말한대로
getchar()역할이 여기서는fflush랑 비슷함. scanf로 문자열 입력 받으면 \n부분은 그대로 키보드 버퍼에 남아있음. 키보드 버퍼에 \n있는 상태로 다시 입력 함수 실행시키면 \n만 들어감. 그래서 \n없앨려고 getchar씀
근데 함수옆에 *붙이는건 접미사 같은거임?