[완료]키보드 입력 후 프로세서가 종료됩니다.(fgets)
글쓴이: mwizard / 작성시간: 화, 2011/04/19 - 4:54오후
아래 코드를 실행하면 처음 입력은 잘 받아서 처리가 됩니다.
그 후 다시 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"); }
위 코드가 문제가 아니라 다른데서 문제가 있었더군요...
답변 해주신 분들 감사합니다.
Forums:
값을 하나하나 비교해보시고...
strlen(szMsg)-1 나
strlen(szMsg)-1 >= 80-1 로 바꿔보세요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
음
두번째 fgets 후 printf(2) 문이 실행이 안되고 죽어버리나요?
아 이글 쓴사람인데요
코드보니까 윈도우용 프로그램인거같은데 printf(2) 아래에 getchar(); 한번 넣어보시겠어요?
어쩌면 printf(2) 실행되고 밑에서 어떤 오류로 인해 종료는 되었는데 창이 닫혀서 printf(2)가 안보이는걸수도있으니까
printf(..) 문 밑마다 getchar() 을 한번씩 넣어봐주실래요?
댓글 달기