내 이런 황당한 경우는 처음이네요.. fgets 관련

neohwang의 이미지

#include
#include

int main(int argc, char *argv[])
{
char id[100];

printf("ID : ");
fgets(id,sizeof(id),stdin);
printf("\n----------\n%d :%s\n",strlen(id),id);

return 0;
}

위 코드를 HPUX 11.11 시스템에서 gcc가 아닌 cc로 컴파일 하여 실행한후
@@@@@@ 이런 골뱅이를 입력하면,, 입력이 안되네요...

내가 뭘 잘못 알고 있는지는 모르지만.. 대단히 황당하네요..

gcc로 컴파일 하면 잘 되는데... 내 미쵸..

# cc -o ttt ttt.c
# ./ttt
ID : @@@@@@@@@2

----------
1 :2

Anonymou의 이미지

그리고 fgets(..,sizeof(id) -2,..); // newline + '\x0' 을 위해

neohwang의 이미지

HP 시스템 있으신 분들 한 번 해보세요.. 정말 어처구니 없어요..
골뱅이(@)를 입력받을 방법이 없습니다.
(역슬래쉬 하는 방법 말고는...)

kewlbear의 이미지

제 기억으로는 오래 전의 유닉스에서 @를 erase 문자로 사용했습니다. 사용하시는 시스템의 터미널 설정을 확인해보시기 바랍니다.

dongyuri의 이미지

잘 되는데요?

HP-UX 11.23에서 해봤습니다.

arruu의 이미지

프로프트에서 bash 쉘 다시 실행시키세요

bash-3.1$ bash

sunyata01의 이미지

꼭 써야되는거 아니면, fread로 하시면 잘될듯.