C의 동적 구조 및 포인터

Bg601

C에서 내 프로그램에 문제가 있습니다.이 함수 create_class_list는 입력 파일에서 학생의 ID를 읽고 학생 목록을 저장하는 데 필요한 메모리를 동적으로 할당하고 학생의 ID를 초기화해야합니다.

더 구체적으로:

  • 에 포인터 배열을 할당합니다 student.
  • 유형의 각 변수에 대한 메모리를 할당하십시오 student.
  • 멤버를 적절한 ID 값으로 초기화하십시오.
  • 배열의 각 포인터가 유형의 변수를 가리 키도록 설정합니다 student.
  • 에 대한 포인터 배열의 시작 부분에 대한 포인터를 반환합니다 student.

지금까지 내가 가지고있는 코드는 다음과 같습니다.

내 구조 학생 :

typedef struct{

    int ID;
    int project_grade;
    int exam_grade;
    float course_mark;
    struct student *student;

}student;

내 수업 목록 기능 :

student **create_class_list( char *filename, int *sizePtr )
{
    int i = 0;
    student **StructPtr;
    student *students;

    FILE *input_file = fopen("IDnumbers.txt", "r"); //opens input file for reading
    fscanf(input_file,"%d", sizePtr ); //scans the number of students from input file

    StructPtr = (student**)calloc(*sizePtr, sizeof(student*)); // creates an array of    pointers to student
    student **original = StructPtr; // makes a pointer to the first element
    students = (student*)calloc(*sizePtr, sizeof(student)); // creates an array of type student of 'x' students

    while(i < *sizePtr){

        StructPtr[i] = &students[i];
        fscanf(input_file,"%d",students[i].ID ); //allocates IDs to all students
        students[i].course_mark = 0; //initializes all grades to 0
        students[i].exam_grade = 0; //initializes all grades to 0
        students[i].project_grade = 0; // initializes all grades to 0
        i++; // increments counter
    }

    fclose(input_file); //closes file
    return original; //returns pointer to first element
}

그리고 내 주요 테스트 기능 :

int main()
{
    int NumberStudents = 0; // number of students in class
    int i; //counter variable
    student **x;

    x = create_class_list("IDnumbers.txt", &NumberStudents);

    printf("%d\n",(**x).ID);
    return 0;
}

그리고 출력은 입력 파일의 첫 번째 학생 #이어야합니다. 프로그램이 컴파일되지만 충돌이 발생합니다.

Ryanpattison

한 줄을 변경해야합니다.

fscanf(input_file,"%d", &students[i].ID);

fscanf의 인수는 포인터 이기 때문 입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C 포인터 및 구조

분류에서Dev

구조체 내의 동적 배열에 대한 포인터 C

분류에서Dev

할당 : 스마트 포인터 및 동적 크기 구조

분류에서Dev

"."사용 포인터 및 구조의 "->"대

분류에서Dev

배열 및 구조의 포인터

분류에서Dev

C : Typedef 구조 및 포인터 이상

분류에서Dev

C, 연결된 데이터 구조 및 이중 포인터 동작

분류에서Dev

C 포인터 및 동적 할당

분류에서Dev

C 및 C ++의 포인터 및 동적 메모리

분류에서Dev

C 동적 구조 및 구성원

분류에서Dev

C-동적 구조체 배열에 대한 포인터

분류에서Dev

C 구조체와 포인터 혼동

분류에서Dev

포인터 및 참조 (C ++)

분류에서Dev

C 구조의 포인터와 구조

분류에서Dev

C ++ 17 구조화 된 바인딩 및 이동 의미 체계

분류에서Dev

인수로서의 C 구조체 포인터 : 구조체를 영구적으로 변경

분류에서Dev

C-구조체 "세그먼트 오류 (코어 덤프 됨)"의 동적 배열에 대한 포인터

분류에서Dev

C-realloc을 사용하지 않고 동적 크기의 구조체 포인터 배열?

분류에서Dev

구조 정의의 구조 포인터

분류에서Dev

포인터 및 참조로 전달 C ++

분류에서Dev

C ++ 참조 및 포인터 int * p = & a [2];

분류에서Dev

참조 및 포인터에 의한 C ++ 함수 입력 인수

분류에서Dev

C 및 C ++의 포인터

분류에서Dev

동적 설문 조사 및 데이터베이스의 지속적인 답변

분류에서Dev

C의 구조체 포인터 상속?

분류에서Dev

C의 구조와 typedef와 포인터

분류에서Dev

C 구조의 포인터 크기

분류에서Dev

C-구조의 포인터

분류에서Dev

C 포인터 및 정수 — 특정 경우의 포인터 동작