scanf 무한루프 고수님들 도와주세요...
글쓴이: 이건우 / 작성시간: 일, 2019/10/13 - 7:28오후
#include
#include
int main(){
char c;
char b[100]="";
do{
scanf("%[^\n]s",b); // 대신 scanf("%s",b); 하면 무한루프 안도는데 왜 이러면 무한뤂돌아요?
if(strcmp(b,"exit")==0)
break;
printf("asd");
}while(strcmp(b,"exit")!=0);
}
공백받고 토큰분리하는 과제에 무한루프를 써야하는데 스캔에프 저거 어캐 해결하나요..
Forums:
"%[^\n]s"가 의도한 format string이
"%[^\n]s"
가 의도한 format string이 맞나요?s와 [(set)]은 둘 다 conversion specifier이기 때문에 % 하나에 둘 중 하나만 들어갈 수 있습니다.
이 경우 %[^\n]까지 하나의 conversion specification으로 해석이 되고, 뒤의 s는 따로 남아 다른 역할을 맡게 되지요.
scanf의 format string은 아주 간단한 스크립트 언어라고 불러도 될 정도로 복잡하고, 의외로 초보들은 잘 모르는 기능들이 많습니다. 더 심각한 문제는, 프로그래머가 의도하지 않은 방식으로 작성되어도 경고 하나 없이 조용히 (이상하게) 동작하는 경우가 많다는 거죠.
레퍼런스를 늘 참조하고 조심히 쓰는 게 좋습니다.
https://en.cppreference.com/w/c/io/fscanf
댓글 달기