함수의 포인터로 배열 구조 전달 및 초기화

Jc 존

포인터로 전달하여 구조 배열을 초기화하는 데 문제가 있습니다. 다음 초기화에서 배열 구조체 주소를 추적하기 위해 구조체 크기에서 카운터를 곱하려고 시도했지만 잘못된 출력을 제공합니다. 누구든지 나를 도울 수 있습니까?

내 코드는 다음과 같습니다.

#include <stdio.h>
#pragma pack(1)

struct student {
    int idnum;
    char name[20];
};

void createStudent(struct student *);

int counter=0;

int main() {

    struct student s[2];
    int choice = 0;

    do {
        printf("\nMENU\n");
        printf("1.] Create student\n");
        printf("2.] Display student\n");
        printf("Enter choice: ");
        scanf("%d",&choice);

        switch(choice){
            case 1: createStudent(s);
                    break;
            case 2: displayStudent(s);
                    break;
        }
    }while(choice !=3);
    return 0;
}

void createStudent(struct student *ptr) {
    if(counter > 1) {
        printf("Array Exceed");
    }else {
        *(ptr + counter*sizeof(struct student));
        printf("The counter: %p\n",*(ptr + counter*sizeof(struct student)));

        printf("Enter ID NUM:");
        scanf("%d",&ptr->idnum);
        fflush(stdin);
        printf("\nEnter NAME:");
        scanf("%s",ptr->name);
        counter++;
    }


}

void displayStudent(struct student *ptr) {
    for(int i=0;i<counter;i++) {
        printf("\nStudent ID NUM: %d\t Student Name: %s",ptr->idnum,ptr->name);
    }
}
Bharat S

두 가지 변경이 필요합니다.
(1)에서 포인터를 증가시키지 않습니다 createStudent. 따라서 라인 *(ptr + counter*sizeof(struct student));ptr += counter
As ptris already a pointer of type으로 바꾸고 struct student1 씩 증가 시키면 자동으로 다음 레코드로 이동합니다.

(2) displayStudent역시 증분을 사용하지 않습니다 i. 따라서 printfptr++;루프 내에 추가 하십시오.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

3 개의 u32 포인터를 인수로 원하는 c 함수에 배열 및 구조체를 전달하는 방법 (ctypes)

분류에서Dev

구조체의 배열 생성, 전달, 가져 오기 및 C로 루프

분류에서Dev

구조체의 배열을 함수에 인수로 전달

분류에서Dev

함수에 전달 된 구조체의 배열에 대한 C 포인터

분류에서Dev

함수 포인터가있는 구조체 배열 초기화 C

분류에서Dev

구조체의 일부인 배열을 함수에 대한 uint8_t 포인터로 전달

분류에서Dev

배열 및 구조의 포인터

분류에서Dev

C 구조 초기화 (정수 배열 및 정수 값)

분류에서Dev

C의 값으로 함수에 구조체 배열 전달

분류에서Dev

c의 구조체에 배열 (포인터 아님) 전달

분류에서Dev

char 배열로 구조체 포인터 초기화

분류에서Dev

const 및 배열 구조 필드의 목록 초기화

분류에서Dev

char 배열 및 포인터 초기화 의미

분류에서Dev

전역 및 함수의 다른 초기화 및 부호 포인터 값

분류에서Dev

C : 구조체 초기화 및 함수 매개 변수의 포인터에 할당

분류에서Dev

배열의 데이터로 구조체 초기화

분류에서Dev

C ++ 03에서 인수로 전달 된 구조체의 익명 (?) 초기화

분류에서Dev

배열을 포함하는 구조체 초기화

분류에서Dev

구조체 벡터를 정의하고 C에서 포인터로 전달-오류 : 호환되지 않는 포인터 유형에서 초기화

분류에서Dev

'오류 : 상수가 아닌 참조의 잘못된 초기화'참조로 포인터 전달

분류에서Dev

인수로 전달 된 구조체의 배열의 malloc

분류에서Dev

함수 포인터로 구조체 초기화

분류에서Dev

배열의 포인터를 C의 함수로 전달

분류에서Dev

배열의 요소를 C 함수의 포인터로 전달

분류에서Dev

정의 된 구조체의 포인터 초기화를 전역 변수로 가져 오기

분류에서Dev

DatafFame의 배열을 그룹화 및 평면화 된 배열을 사용하여 함수로 전달

분류에서Dev

구조 및 기능 (참조로 전달)

분류에서Dev

생성자 매개 변수로 구조체 배열 초기화

분류에서Dev

구조체 배열을 매개 변수로 함수에 전달

Related 관련 기사

  1. 1

    3 개의 u32 포인터를 인수로 원하는 c 함수에 배열 및 구조체를 전달하는 방법 (ctypes)

  2. 2

    구조체의 배열 생성, 전달, 가져 오기 및 C로 루프

  3. 3

    구조체의 배열을 함수에 인수로 전달

  4. 4

    함수에 전달 된 구조체의 배열에 대한 C 포인터

  5. 5

    함수 포인터가있는 구조체 배열 초기화 C

  6. 6

    구조체의 일부인 배열을 함수에 대한 uint8_t 포인터로 전달

  7. 7

    배열 및 구조의 포인터

  8. 8

    C 구조 초기화 (정수 배열 및 정수 값)

  9. 9

    C의 값으로 함수에 구조체 배열 전달

  10. 10

    c의 구조체에 배열 (포인터 아님) 전달

  11. 11

    char 배열로 구조체 포인터 초기화

  12. 12

    const 및 배열 구조 필드의 목록 초기화

  13. 13

    char 배열 및 포인터 초기화 의미

  14. 14

    전역 및 함수의 다른 초기화 및 부호 포인터 값

  15. 15

    C : 구조체 초기화 및 함수 매개 변수의 포인터에 할당

  16. 16

    배열의 데이터로 구조체 초기화

  17. 17

    C ++ 03에서 인수로 전달 된 구조체의 익명 (?) 초기화

  18. 18

    배열을 포함하는 구조체 초기화

  19. 19

    구조체 벡터를 정의하고 C에서 포인터로 전달-오류 : 호환되지 않는 포인터 유형에서 초기화

  20. 20

    '오류 : 상수가 아닌 참조의 잘못된 초기화'참조로 포인터 전달

  21. 21

    인수로 전달 된 구조체의 배열의 malloc

  22. 22

    함수 포인터로 구조체 초기화

  23. 23

    배열의 포인터를 C의 함수로 전달

  24. 24

    배열의 요소를 C 함수의 포인터로 전달

  25. 25

    정의 된 구조체의 포인터 초기화를 전역 변수로 가져 오기

  26. 26

    DatafFame의 배열을 그룹화 및 평면화 된 배열을 사용하여 함수로 전달

  27. 27

    구조 및 기능 (참조로 전달)

  28. 28

    생성자 매개 변수로 구조체 배열 초기화

  29. 29

    구조체 배열을 매개 변수로 함수에 전달

뜨겁다태그

보관