2011-09-15 6 views
0

나는 내 프로그램에 대한 나의 오류를 천천히 추적하고있다. 나는 이것을 이것을 좁혔다. 내가 제대로 값을 읽고, 사용자 입력fscanf 개행 문자 읽기

fscanf(stdin, "%c %c %d", &car, &dir, &amount);

에게 잘 작동 내가 처음 액세스 할 수 있습니다. 루프의 두 번째 시간에 \n을 차에 입력합니다. 차 대신 입력합니다. 그런 다음 차 안에서 dir에 있어야했던 내용을 읽습니다. 양은 정확하게 읽습니다. 차가 계산을위한 다른 함수로 전달됨에 따라 나는 결국 세그 폴트로 끝납니다.

\ n 이전 줄에서 읽었습니까?

+0

네, 그 일을 할 것 같습니다 내에서 구문 분석. –

답변

1

"%c" 변환 지정자는 일반적으로 공백을 제거하지 않습니다. 첫 번째 변환 지정자

if (fscanf(stdin, " %c %c %d", &var, &dir, &amount) != 3) { /* error */ } 

또는, 어쩌면 더 나은 전에 공간을 추가
봅니다, 전체 라인을 읽고 프로그램

char buf[1000]; 
fgets(buf, sizeof buf, stdin); 
parse(buf);