오류(c언어)

5t0ryv1ct의 이미지

#include <stdio.h>
#include <string.h>
 
int main() {
	int i1 = 0, i2 = 0;		//문제1(숫자 다루기)
	printf("문제 1\n");
	scanf_s("%d", &i1);
	scanf_s("%d", &i2);
	i1 = i1 + i2;
	printf("%d\n", i1); 
 
	char* s1 = NULL;		//문제2(문자열 비교)
	char* s2 = NULL;
	printf("문제 2\n");
	scanf_s("%s", s1, 100);
	scanf_s("%s", s2, 100);
	if (s1 != NULL && s2 != NULL) {
		while (*s1 || *s2) {
			s1++;
			s2++;
		}
		if (*s1 == 0) {
			printf("%s\n", s1);
		}
		else {
			printf("%s\n", s2);
		}
	}
 
 
	int N;					//문제3(이중 반복문)
	printf("문제 3\n");
	scanf_s("%d", &N);
	while (N == 0) {
		int i = N;
		while (i == 0) {
			printf("*");
			i--;
		}
		printf("\n");
		N--;
	}
 
 
 
	return 0;
}

이게 빌드는 되는데 실행 도중에 오류가 뜹니다.컴파일 오류는 아닌 것 같은데 어떻게 해야 하나요
*참고로 문제 2에서 오류가 뜹니다
File attachments: 
라스코니의 이미지

char* s1 = NULL; //문제2(문자열 비교)
char* s2 = NULL;

char s1[100];
char s2[100];

으로요

5t0ryv1ct의 이미지

포인터를 쓸 수 있는 방법은 없나요?

라스코니의 이미지

char *s1 = malloc(100);
char *s2 = malloc(100);

포인터의 이미지

사이즈만 다른 포인터가 배열입니다..

익명 사용자의 이미지

상당히 다릅니다.

비슷하게 쓰이는 경우가 많아서 차이점이 특히 더 중요합니다.
혼동하는 사람이 늘 있거든요.

세벌의 이미지

제목에 오해 소지 있네요.
c언어 자체에 오류가 있다는 건지?
c언어로 짠 그대의 프로그램에 오류가 있다는 건지?