이 프로그램을 실행하면 이름을 입력 할 수있게되어 세그먼트 화 오류가 발생합니다.루프에있는 파일에 쓰지만 분할 오류가 발생하는 경우
나는 왜 이런 일이 일어나는지, 어떻게 없앨 지 모른다.
#include <stdio.h>
int main (void)
{
FILE *fp;
fp = fopen("list.txt","a+");
if (fp == NULL){
printf("File list.txt could not be opened.");
}
for(int i=0;i<3;i++){
char *name;
char *str;
char *sta;
printf("Please enter your name: ");
scanf("%s",name);
printf("Please enter your street: ");
scanf("%s",str);
printf("Please enter your state: ");
scanf("%s",sta);
fprintf(fp,"%s,%s,%s\n",name,str,sta);
}
fclose(fp);
}
첫 번째 질문 : 디버거는 무엇을 말합니까? – tadman
힌트 :'char * name'은'scanf'에서 바로 사용할 수있는 문자 버퍼가 아닙니다. 초기화되지 않았습니다. 공간이 할당되지 않았습니다. 폭발 할 것입니다. – tadman
scanf에 대한 [설명서] (http://www.cplusplus.com/reference/cstdio/scanf/)의 내용 : ... (추가 인수) 형식 문자열에 따라 함수는 추가 시퀀스 인자들, ** 각각 할당 된 저장 공간에 대한 포인터를 포함 ** ** 추출 된 문자들의 해석이 적절한 타입으로 저장되어있는 곳의 '(emphasis mine) – Les