2013-02-21 4 views
0

공간을 본 후 코드를 완전히 읽지 않습니다. 이 공백을 읽도록 내가 코드를 변경하려면 어떻게scanf로 공백을 읽으려면 어떻게해야합니까?

char line[300]; 

printf("Enter a string to be checked: "); 
scanf("%s", line); 

내가 리디렉션을 통해 입력에 노력하고있어 문자열 :

((AA) <> [[[{[X]]] ] <>

+1

가능한 복제본 [C에서 scanf를 사용하여 공백을 읽는 방법] (http://stackoverflow.com/questions/3765023/how-do-i-read-white-space-using-scanf-in- c) –

+1

가능한 복제본 [어떻게 scanf를 사용하여 공백을 입력 할 수 있습니까?] (http://stackoverflow.com/questions/1247989/how-do-you-allow-spaces-to-be-entered-using- scanf) –

답변

2

당신은 scanf와의는 fgets intsead를 사용할 수 있습니다. 예 :

fgets(line, 1024, stdin); 
+0

그리고 gets를 사용할 수 있지만 좋은 방법은 아닙니다. – someuser

+0

무엇? ** **이 답변은 정답입니다. –

0

% s 비 공백 문자 시퀀스와 일치합니다. 다음 포인터는 char에 대한 포인터 여야하며 배열은 모든 시퀀스와 종료 NUL 문자를 허용 할만큼 충분히 커야합니다. 입력 문자열은 공백이나 최대 필드 너비에서 멈 춥니 다.

다른 형식 문자열을 선택해야합니다. 입력 문자열에서 정확히 무엇을 성취하려고하는지 명확하게 알 수는 없습니다.

-1

코드를 확인하시기 바랍니다 ..

printf("Enter a string to be checked: "); 
    gets(line); 
    puts(line); 

출력 : -

Enter a string to be checked: ((a a) < > [ [ [ { [ x ] ]]] <>) 
((a a) < > [ [ [ { [ x ] ]]] <>) 
Press any key to continue . . . 
+2

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – ryadavilli

+0

저자 문자열로 코드를 테스트했습니다. 그래서 bahaviour를 테스트하지 않고 어떤 대답을 판단하지 마십시오. –

2

이전에 게시 한대로 fgets(line, size, stdin);을 사용해야합니다. 매번 동일한 입력 크기를 예상하므로 gets()을 절대로 사용하지 않아야합니다. 최소한 gcc 인 컴파일러는 사용하지 말라고 경고합니다.

관련 문제