문자열 처리에서여... 입력이 안되네요
소스 코드는 다음과 같습니다.
===============================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *compression(char *);
main()
{
char cue;
printf("압축(Compression), 종료(Exit) ?");
scanf("%c",&cue);
char message[100];
int len;
if (cue == 'c' || cue == 'C')
{
printf("압축할 문자열 >>> ");
fgets(message, sizeof(message), stdin);
len = strlen(message);
message[len-1] = '\0';
printf("\n압축된 문자열 >>> %s",compression(message));
}
==============================================
compression 이란 함수는 만들었는데요...
fgets함수를 써서 키보드로 입력을 받으려고 했는데 입력을 기다리지 않고
바로 다음 단계로 넘어가 버리네요...
저거랑 거의 똑같이 해서 다른 프로그램은 만들었는데... 왜 이건 안되는지 도무
지 모르겠어요.....
참고로 gcc 컴파일러 쓰구요 에러는 나지 않습니다.
고수님들 한 수 부탁드립니다.
scanf()로 받을때 '\n' 을 처리해주지 않는다고 알고 있습니다..
scanf()로 받을때 '\n' 을 처리해주지 않는다고 알고 있습니다..^^;;
즉, 버퍼에 남아서 다음 입력 fgets() 때 입력되겠죠..^^
저도 한동안 저것때문에 머리를 싸맸다는...흑..ㅠㅠ
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
감사합니다.^^
scanf가 그랬군요...
지금 막 fgets으로 캐릭터를 받아서 하니깐 되네요...
근데 scanf 로 해결하는 방법은 없을까요?? 궁금하네요...
scanf 관련된 비슷한 스레드 많이 있을겁니다검색 해보세요 8)
scanf 관련된 비슷한 스레드 많이 있을겁니다
검색 해보세요 8)
http://bbs.kldp.org/viewtopic.php?t=400&highlight=scanf
fget 하기 전에 버퍼를 비우면 ...int fflush(FILE
fget 하기 전에 버퍼를 비우면 ...
int fflush(FILE *stream);
[quote="nahanjang"]fget 하기 전에 버퍼를 비우면 ..
입력 stream에 대한 fflush의 행동은 정의되어 있지 않습니다.
"입력 stream에 대한 fflush의 행동은 정의되어 있지 않습니다
"입력 stream에 대한 fflush의 행동은 정의되어 있지 않습니다"
잘 모르겠지만
fflush(stdin);
을 하면 정상적인 입력을 할 수가 있더라구요.
다른 문제가 있는건 모르겠지만...
댓글 달기