xzsa18   2년 전

보통 for문 안에 for문 + 내용을 집어 넣으면 내부 for문을 돌리고 내용을 실행시키고 다시 반복을 하지 않나요?

현재 코드를 실행시키면 OOXOO를 실행할 때 바로 출력값이 나와야 하는데 저걸 5번을 입력하고 나서야 값이 나오는게 이해가 안갑니다…

dlwlsdn3642   2년 전

for문 안에 있는 for문 안에서 scanf를 하셨기 때문에 처음에 5를 입력하면 5번의 입력이 추가로 끝나야 printf가 실행됩니다.

말씀하신 부분처럼 for 문안에 for문+내용을 넣으면 내부 for문이 전부 돌고 내용이 실행되고 이 코드에서도 그렇게 됩니다.

xzsa18   2년 전

아 그럼 scanf에서 %c로 받을때랑 %s로 받을때랑 값이 다르게 나오던데 무슨 이유인지 자세히 알려주실수 있나요?

dlwlsdn3642   2년 전

%c와 %s가 형식이 다르기 때문입니다.

%c는 문자를 나타내고 %s는 문자열입니다.

그리고 문자열은 문자의 배열 형식으로 존재합니다.

scanf("%d",&a); 에서처럼 &를 붙여서 a의 주소를 주죠.

이 처럼 scanf로 값을 저장할 때는 주소로 주는데 문자의 경우 다른 변수처럼 생각해도 되지만 문자열은 배열이기 때문에 신경을 써야합니다.

배열은 이미 주소를 가르키기 때문입니다.

int main()
{
    char a;
    char b[100];
    scanf("%c",&a);
    scanf("%s",b);
}

이것처럼 변수 a는 배열이기 때문에 %s로 받을 때 &를 앞에 붙이지 않죠.

결론은 %c와 %s는 전혀 다른 방식으로 값을 받는다는 것입니다.

xzsa18   2년 전

감사합니다!

댓글을 작성하려면 로그인해야 합니다.