c언어 %s이거..
마리
질문 제목 : c언어 %s이거..%s이거 안에 뭐 넣었는데 뭔가가..
질문 내용 : while(1){
printf(당신의 이름을 입력 하시오 : );
scanf(%[\n]s,&name);
if(strcmp(name,xx) ==0){
printf(살좀뺴라 돼지야\n);
}
}
여기서
처음 반복문 돌릴때는 %s사이에 [^\n]이걸 안넣고 하니까
반복문이 제대로 됬었거든요?(한번 xx를 입력 하면 제대로 당신의 이름을 입력 하시오 뛰우고 입력 받을려고 멈춤..)
근데 [^\n]을 넣으니
멈추기 않고 그냥 계속 돌아요..
이거 왜그런거죠.?
([^\n]넣고 싶은 이유가 그냥 %s쓰면 xx사이에 스페이스 넣으면 인식을 못하잖아요.. 그래서 스페이스 넣어도 인식 되게 할려고...
아니면 스페이스 인식하는 서식(?)이 따로 있나요 [^\n]말고도?)
+
[^\n]이거 의미가 개행문자(\n)빼고 다 받는다.. 이런 의미인가요?
-
세실
fflush 잊고있었는데..
써보니 되네요 ㅋ 감사합니다~ -
츠키
fflush()를 사용해도 되듯...
-
민트향
문제가 뭔진 이해가 됬는데..
공백 넣어줘도 무한루프 돌아요 ㄲ.. -
허리품
\%[\\n] \ 빈 공백을 하나 넣어줍니다.
\\n 아닌 문자들을 읽다가 \\n 을 만나면 \\n 을 읽지않고 버퍼에 둔체 scanf를 종료해서 그렇습니다.
\\n 이 버퍼에 남아 있으므로 scanf 가 계속 아무것도 못읽고 반복되는 것이죠. -
의사양반
정규표현식(regular expression)을 검색해보세요.
-
사랑
s빼고 실행해도 계속 입력받을려고 멈추지 않고 무한루프 도는데요...
-
에가득
[^\\n] 이 문자열을 받기 때문에 뒤에 s 는 없어야 됩니다.