2009-04-23 3 views
0

개행을 억제하기 위해 % [^ \ n]을 사용합니다. 입력에서 공백을 건너 뛰는 형식이 무엇인지 제안 할 수 있습니다 (예 : "hallo stackflow"를 입력해야하는 경우). 나는 fgets를 알고 도착하지만 그들을 사용하고 싶지 않다, 그들은 문제를 만들고있다.scanf를 통한 입력시 여백 공백 억제

+1

당신은 분명해야합니다. 어떤 종류의 문제가 발생합니까? 비 차단 입력을 원하면 그렇게 말하십시오. – unwind

+0

제발, 자본화! – Tom

+0

fgets는 새로운 라인 이후에 ever.even을 기다리고 있습니다. 라인을 수신하지 못합니다 .i는 eof 나 newline이 될 때까지 모든 것을 읽습니다. client-server.on 서버의 채팅 프로그램에서 이것을 사용하여 예상 한대로 종료합니다. 그러나 클라이언트 쪽에서 그것은 막혔습니다. – mawia

답변

0

scanf 형식의 빈칸을 넣으십시오. 공백을 억제합니다.

1

"공백 포함"이라고 생각합니다. 사용 :

#define str(x) #x 
#define xstr(x) str(x) 
/* ... */ 
char buf[ SIZE + 1 ] = ""; 
int rc = scanf("%" xstr(SIZE) "[^\n]%*[^\n]", buf); 
/*you may need the return value later on, if reading 
    in multiple strings with whitespaces in a loop */ 
if (!feof(stdin)) 
    getchar(); /* consume newline */