문제
C에 관한 모든 것을 궁금해하면, 당신은 이것을 탈취 할 수 있습니까?
나는 터보를 사용하고있다 c
이 코드가 있습니다
scanf(“%d , %d”,&a,&b);
printf(“%d,%d”,a,b);
scanf(”%c”,&c);
printf(“%d,%d”,a,b);
그런 다음 scanf는 c의 스캔 값을 스캔하지 않습니다
출력은 : 1,2
내가 이것을 사용한다면
scanf(“%d , %d”,&a,&b);
printf(“%d,%d”,a,b);
scanf(”%c ”,&c);//note a blank after %c
printf(“%d,%d”,a,b);
그런 다음 C의 값을 스캔합니다.
출력은 1,2 1,2입니다
동일한 코드
scanf(“%d , %d”,&a,&b);
printf(“%d,%d”,a,b);
scanf(”%1s”,&c);
printf(“%d,%d”,a,b);
이 세그먼트에서 a의 값은 표시되지만 b의 값은 설정됩니다.
출력은 1,2 1,0입니다
두 질문의 답변을 설명해 주시겠습니까?
답을 얻지 못했지만 도와주세요 .......
해결책
캐릭터가 스캔되지 않는다는 것을 어떻게 알 수 있습니까? c
첫 번째 경우? 나는 당신이 수신되지 않은 인쇄문을 제공하고 아무것도 보지 않기 때문이라고 생각합니다.
%C 지정자의 동작에주의를 기울이는 사람 페이지를 읽으십시오.
씨
너비 카운트 문자의 시퀀스와 일치합니다 (기본 1); 다음 포인터는 Char에 대한 포인터 여야하며 모든 캐릭터를위한 충분한 공간이 있어야합니다 (종료 NUL이 추가되지 않음). 주요 공백의 일반적인 건너 뛰기가 억제됩니다. 먼저 공백을 건너 뛰려면 형식의 명시 적 공간을 사용하십시오.
강조 추가
입력에 같은 양식이있는 경우 1, 2 a
첫 번째 스캔은 1 , 2
그리고 떠난다 a
, 그 시점에서 두 번째 스캔은 우주. 두 번째 예제가 확실하지 않습니다 ~일 것이다 이 경우 작업하십시오.
다른 팁
마지막 경우에는 값이 메모리에서 설정되는 곳과 관련이 있습니다.
두번째 scanf
주소에 길이 1을 넣습니다. c
- 즉, 하나의 캐릭터, 널 터미네이터가 뒤 따릅니다.
널 터미네이터가 어디로 가는지 맞춰보세요?