c언어 %s %c 질문 있는데 도와주실분 있나요??

익명 사용자의 이미지

#include <stdio.h>
 
int main(void)
{
	char str[101] ={0,};
	int N;
	int i;
	int sum = 0;
	scanf("%d", &N);
	scanf("%c", str);
 
	for (i=0; i<N; i++){
		sum += str[i] -'0';
	}
	printf("%d", sum);
 
	return 0;
}

공백없는 숫자의 문자열을 받아서 합을 출력하는 코드입니다. 코드를 수정 해달라는 질문은 아니고요 원래 %s를 써야하는데 %c를 썼습니다. 위에처럼 그런데 %c로는 문자열을 받을 수 없는 것은 알긴 하는데 왜 N을 입력받는 순간 프로그램이 끝날까요? 컴파일러는 DEV C++입니다.
scanf("%s", str);

익명 사용자의 이미지

입력을 어떻게 줬는지는 모르겠으나, 십중팔구 숫자(N)를 입력한 후 공백문자가 들어갔겠지요.

%s는 문자열을 입력 받기 전에 공백문자를 스킵하지만 %c는 그렇지 않아서 공백문자 입력 받고 그냥 넘어갑니다.
이거 몰라서 헤매는 초보자들 엄청 많아요. 거의 통과의례 수준.

익명 사용자의 이미지

아하 그렇군요 감사합니다 그런거 같네요!