c언어 질문입니다...세그멘테이션오류좀 도와주세요...
글쓴이: kimsunboy / 작성시간: 화, 2020/06/16 - 11:16오후
#include <stdio.h> typedef struct class { char *name; int num; double score; }data; int main() { int a; printf("몇명의 학생데이터를 입력하시겠습니까?"); scanf("%d",&a); data clas[a]; for(int i=0;i<a;i++) { printf("----------------------------\n"); printf("이름을 입력하세요->"); scanf("%s",&(clas[i].name)); printf("학번을 입력하세요->"); scanf("%d",&(clas[i].num)); printf("학점을 입력하세요->"); scanf("%lf",&(clas[i].score)); printf("----------------------------\n"); } char S='Y'; while(S=='Y') { printf("학생정보를 열람하시겠습니까?\n"); scanf(" %c",&S); if(S!='Y') break; int NUM; printf("학번을 입력해 주세요->"); scanf("%d",&NUM); for(int i=0;i<a;i++) { if(NUM==(clas[i].num)) { printf("----------------------------\n"); printf("학생이름->%s\n",clas[i].name); printf("학생학번->%d\n",clas[i].num); printf("학생학점->%lf\n",clas[i].score); printf("----------------------------\n"); } } } }
안녕하세요 컴파일은 잘 됩니다만...실행도중
for(int i=0;i<a;i++) { if(NUM==(clas[i].num)) { printf("----------------------------\n"); printf("학생이름->%s\n",clas[i].name); printf("학생학번->%d\n",clas[i].num); printf("학생학점->%lf\n",clas[i].score); printf("----------------------------\n"); } }
부분에서 포인터문자열을 출력할때 세그멘테이션 오류가 뜹니다...
문제점이 무엇인지 가르쳐 주세요 ㅠㅠㅠ..
Forums:
gcc -Wall 해서 에러 뿐 아니라 경고까지
gcc -Wall 해서 에러 뿐 아니라 경고까지 보이게 해 보셔요.
세벌 https://sebuls.blogspot.kr/
해결했습니다!
해결했습니다!
포인터에 배열을 할당해주지않아서 문자열 입력이 불가능한거였습니다.
근데 포인터에 scanf함수로 입력할때 &를 붙여주면 안되는건가요 아님 필요없는건가요?
scanf()는 인자로 주소를 받습니다. 포인터 변수
scanf()는 인자로 주소를 받습니다. 포인터 변수 자체가 주소를 저장하고 있기 때문에 &를 붙여줄 필요가 없습니다.
이 때 p가 아니라 &p를 준다면 p는 name의 주소가 아닌, 우리가 입력해준 값을 가지게 될겁니다.
컴파일러나 IDE가 오류를 잡아내는지는 모르겠네요
댓글 달기