[완료]키보드 입력 후 프로세서가 종료됩니다.(fgets)

mwizard의 이미지

아래 코드를 실행하면 처음 입력은 잘 받아서 처리가 됩니다.
그 후 다시 fgets에서 입력을 하고나면 바로 죽어 버립니다.
어디서 죽는지 보려고 printf문을 써놨는데 fgets문 끝나고 다음 printf문을 실행하지 않더군요..

에러 처리를 위한 if문 안으로는 안들어갑니다.

while(1)
{
	memset(szMsg, 0x00, sizeof(szMsg));
	printf("전송할 메시지를 입력 해 주세요(80byte, 종료:q)\n");
printf("1");	
	fgets(szMsg, sizeof(szMsg), stdin);
printf("2");	
	if(strlen(szMsg) == 1 && szMsg[0] == 'q')
	{
printf("3");	
		close(nSock);
		break;
	}
printf("4");	
 
	if(strlen(szMsg) > 80)
	{
printf("5");	
		printf("메시지는 80byte를 초과할 수 없습니다.\n");
		continue;
	}
printf("6");	
	if(SendMsg(DELIVER, szMsg) < 0)
		LogWrite("SendMsg error");
}

위 코드가 문제가 아니라 다른데서 문제가 있었더군요...
답변 해주신 분들 감사합니다.

shint의 이미지

strlen(szMsg)-1 나
strlen(szMsg)-1 >= 80-1 로 바꿔보세요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

두번째 fgets 후 printf(2) 문이 실행이 안되고 죽어버리나요?

익명 사용자의 이미지

코드보니까 윈도우용 프로그램인거같은데 printf(2) 아래에 getchar(); 한번 넣어보시겠어요?
어쩌면 printf(2) 실행되고 밑에서 어떤 오류로 인해 종료는 되었는데 창이 닫혀서 printf(2)가 안보이는걸수도있으니까
printf(..) 문 밑마다 getchar() 을 한번씩 넣어봐주실래요?