c언어 질문입니다...세그멘테이션오류좀 도와주세요...

kimsunboy의 이미지

#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");
      }
    }

부분에서 포인터문자열을 출력할때 세그멘테이션 오류가 뜹니다...
문제점이 무엇인지 가르쳐 주세요 ㅠㅠㅠ..

세벌의 이미지

gcc -Wall 해서 에러 뿐 아니라 경고까지 보이게 해 보셔요.

kimsunboy의 이미지

해결했습니다!
포인터에 배열을 할당해주지않아서 문자열 입력이 불가능한거였습니다.
근데 포인터에 scanf함수로 입력할때 &를 붙여주면 안되는건가요 아님 필요없는건가요?

익명 사용자의 이미지

scanf()는 인자로 주소를 받습니다. 포인터 변수 자체가 주소를 저장하고 있기 때문에 &를 붙여줄 필요가 없습니다.

    char name[16] = "Hell World!!";
    char *p = name;

이 때 p가 아니라 &p를 준다면 p는 name의 주소가 아닌, 우리가 입력해준 값을 가지게 될겁니다.
컴파일러나 IDE가 오류를 잡아내는지는 모르겠네요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.