C에서 매개 변수로 구조체 포인터를 사용하여 void 함수를 호출하는 방법은 무엇입니까?

XXTT 000123

내가 정말로 필요한 것은 이러한 종류의 함수를 호출자에게 반환하는 방법에 대한 예제입니다. 함수와 매개 변수의 유형을 제외하고는 내 코드와 관련이 없습니다.

세 명의 사용자 정의 사람의 이름과 나이를 읽을 수 있도록 아래에이 함수를 작성했습니다.

void readData(Person *p) 
{
    char name1[20], name2[20], name3[20];
    int age1, age2, age3;
    printf("Enter person 1: \n");
    scanf("%s %d", &name1, &age1);
    printf("Enter person 2: \n");
    scanf("%s %d", &name2, &age2);
    printf("Enter person 3: \n");
    scanf("%s %d", &name3, &age3);
    struct person1 {char name1[20]; int age1};
    struct person2 {char name2[20]; int age2};
    struct person3 {char name3[20]; int age3};
    struct Person {struct person1; struct person2; struct person3};
    struct Person man[3] = {{name1, age1}, {name2, age2}, {name3, age3}};
    p = &man;
}

아래 함수에서 사용할 수 있도록 위 함수의 변수를 재사용하고 싶습니다. 사용자 정의 변수이기 때문에 변수를 '재 선언'할 수 없으므로 어떻게해야합니까? 참조 또는 가치로 전화합니까? 그렇다면 어떻게해야합니까? 필요한 return것이 있습니까? 이런 종류의 기능에 대한 예를 찾을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

Person findMiddleAge(Person *p) 
{
    int middle;
    if ((age1 < age2 && age2 < age3) || (age3 < age2 && age2 < age1)) {
        middle = age2;
        struct Person man[1] = {name2, age2};
        }
    else if ((age2 < age1 && age1 < age3) || (age3 < age1 && age1 < age2)) {
            middle = age1; 
            struct Person man[1] = {name1, age1};
            }
    else if ((age1 < age3 && age3 < age2) || (age2 < age3 && age3 < age1)) {
        middle = age3;
        struct Person man[1] = {name3, age3};
        }
    printf("%d \n", middle);
}

아래 코드는 중요한 경우를 대비하여 전체 코드를 보여줍니다. 함수 내의 코드 줄을 제외하고는 수정할 수 없습니다 .readData(Person *p)Person findMiddleAge(Person *p)

typedef struct {
   char name[20]; 
   int age;
} Person; 

void readData(Person *p);
Person findMiddleAge(Person *p);
int main() 
{
   Person man[3], middle;   

   readData(man);
   middle = findMiddleAge(man);
   printf("findMiddleAge(): %s %d\n", middle.name, middle.age);
   return 0;
}

void readData(Person *p) 
{
    char name1[20], name2[20], name3[20];
    int age1, age2, age3;
    printf("Enter person 1: \n");
    scanf("%s %d", &name1, &age1);
    printf("Enter person 2: \n");
    scanf("%s %d", &name2, &age2);
    printf("Enter person 3: \n");
    scanf("%s %d", &name3, &age3);
    struct person1 {char name1[20]; int age1};
    struct person2 {char name2[20]; int age2};
    struct person3 {char name3[20]; int age3};
    struct Person {struct person1; struct person2; struct person3};
    struct Person man[3] = {{name1, age1}, {name2, age2}, {name3, age3}};
    p = &man;
}

Person findMiddleAge(Person *p) 
{
    int middle;
    if ((age1 < age2 && age2 < age3) || (age3 < age2 && age2 < age1)) {
        middle = age2;
        struct Person man[1] = {name2, age2};
        }
    else if ((age2 < age1 && age1 < age3) || (age3 < age1 && age1 < age2)) {
            middle = age1; 
            struct Person man[1] = {name1, age1};
            }
    else if ((age1 < age3 && age3 < age2) || (age2 < age3 && age3 < age1)) {
        middle = age3;
        struct Person man[1] = {name3, age3};
        }
    printf("%d \n", middle);
}

그리고 예, 이것은 숙제이지만 최선을 다했습니다 (원하는 결과를 얻기 위해 6 시간 이상 노력했지만 여전히 할 수 없습니다 .C는 정말 이해하기 어렵습니다). 나는 세 사람 중 중간 나이의 사람을 찾아서 그 사람의 이름과 나이를 발신자에게 돌려 주어야합니다. 내가 모든 일을 잘못하고 있습니까? 실제로 이런 종류의 함수를 호출자에게 반환하는 방법을 알고 싶습니다. 나는 어떤 넣어해야합니까 return문을? 나는 그것에 대한 예제를 찾을 수 없습니다 (누구든지 예제가 있다면, 그 예제로 코드를 스스로 알아낼 수 있다고 생각합니다)?

사전에 도움을 주셔서 감사합니다. 정말 감사합니다.

user3121023

에서 readDatafindMiddleAge p포인트 man[3]에서 main.
에서는 readData어레이에 직접 충진 될 수도있다. 의 반환을 확인하는 것이 좋습니다 scanf. 이름과 나이를 스캔하면 2를 반환합니다. 1, 0 또는 EOF가 반환되면 문제가 있음을 나타냅니다.
에서 findMiddleAge의 중간 값이 결정 p[0].age, p[1].age또는 p[2].age올바른를 반환한다.

#include <stdio.h>

typedef struct {
    char name[20];
    int age;
} Person;

void readData(Person *p);
Person findMiddleAge(Person *p);

int main()
{
    Person man[3] = { { "", 0}}, middle = { "", 0};

    readData(man);
    middle = findMiddleAge(man);
    printf("findMiddleAge(): %s %d\n", middle.name, middle.age);
    return 0;
}

void readData(Person *p)
{
    printf("Enter person 1: \n");
    scanf("%19s %d", p[0].name, &p[0].age);
    printf("Enter person 2: \n");
    scanf("%19s %d", p[1].name, &p[1].age);
    printf("Enter person 3: \n");
    scanf("%19s %d", p[2].name, &p[2].age);
}

Person findMiddleAge(Person *p)
{
    //figure out which is the middle value of
    //p[0].age
    //p[1].age
    //p[2].age
    return p[1];//or p[0] or p[2]
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Blazor에서 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

jQuery에서 매개 변수를 사용하여 JavaScript 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

함수의 매개 변수를 C ++에서 포인터로 사용하여 DLL에서 값을 반환하는 방법은 무엇입니까?

분류에서Dev

C 소개-함수에서 참조로 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

유사한 함수에서 가변 개수의 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

C ++ : 가변 템플릿 인수에서 유형 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

C #에서 알 수없는 구조체로 함수를 P / 호출하는 방법은 무엇입니까?

분류에서Dev

친구 함수 내에서 개인 구조체를 사용하는 방법은 무엇입니까?

분류에서Dev

Python에서 Tkinter로 매개 변수화 된 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

함수를 호출하는 자바 스크립트 객체 내에서이 매개 변수를 사용하는 방법은 무엇입니까?

분류에서Dev

PHP에서 문자열로 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

함수 (C ++)에 매개 변수로 전달할 때 전역 구조체를 수정하는 방법은 무엇입니까?

분류에서Dev

함수에 대한 포인터를 매개 변수로 사용하는 함수를 전달하는 방법은 무엇입니까?

분류에서Dev

Cypress에서 특정 모양의 개체를 인수로 사용하여 호출 된 스텁 함수를 테스트하는 방법은 무엇입니까?

분류에서Dev

선택적 세 번째 매개 변수를 사용하여 다른 함수에서 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

구조체에있는 함수 포인터를 사용하여 함수를 실행하는 방법은 무엇입니까? (씨)

분류에서Dev

콜백에서 구조체의 매개 변수화 된 멤버 함수를 사용하는 방법은 무엇입니까?

분류에서Dev

포인터를 사용하여 C의 구조체로 변수를 인쇄하는 방법은 무엇입니까?

분류에서Dev

일반 함수 포인터를 템플릿 매개 변수로 사용하는 방법은 무엇입니까?

분류에서Dev

함수를 사용하여 모든 구조체 멤버 매개 변수를 변경하는 방법은 무엇입니까?

분류에서Dev

자식 함수 인수에서 부모의 매개 변수를 참조하는 방법은 무엇입니까?

분류에서Dev

매개 변수를 사용하여 텍스트 영역에서 초기화 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

Cython : struct에서 void * 및 함수 포인터를 노출하는 방법은 무엇입니까?

분류에서Dev

함수 이름과 매개 변수를 변수로 사용하여 적절한 함수를 호출하는 방법은 무엇입니까? PHP

분류에서Dev

JSON 매개 변수로 "returns void"함수를 실행하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 너무 많은 매개 변수를 사용하여 SQL Server 저장 프로 시저를 호출하는 방법은 무엇입니까?

분류에서Dev

포인터를 전달하여 매개 변수 유형의 고차원 배열로 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

확장 메서드에서 매개 변수로 함수를 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Blazor에서 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

  2. 2

    jQuery에서 매개 변수를 사용하여 JavaScript 함수를 호출하는 방법은 무엇입니까?

  3. 3

    함수의 매개 변수를 C ++에서 포인터로 사용하여 DLL에서 값을 반환하는 방법은 무엇입니까?

  4. 4

    C 소개-함수에서 참조로 매개 변수를 전달하는 방법은 무엇입니까?

  5. 5

    유사한 함수에서 가변 개수의 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

  6. 6

    C ++ : 가변 템플릿 인수에서 유형 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

  7. 7

    C #에서 알 수없는 구조체로 함수를 P / 호출하는 방법은 무엇입니까?

  8. 8

    친구 함수 내에서 개인 구조체를 사용하는 방법은 무엇입니까?

  9. 9

    Python에서 Tkinter로 매개 변수화 된 함수를 호출하는 방법은 무엇입니까?

  10. 10

    함수를 호출하는 자바 스크립트 객체 내에서이 매개 변수를 사용하는 방법은 무엇입니까?

  11. 11

    PHP에서 문자열로 매개 변수를 사용하여 함수를 호출하는 방법은 무엇입니까?

  12. 12

    다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

  13. 13

    함수 (C ++)에 매개 변수로 전달할 때 전역 구조체를 수정하는 방법은 무엇입니까?

  14. 14

    함수에 대한 포인터를 매개 변수로 사용하는 함수를 전달하는 방법은 무엇입니까?

  15. 15

    Cypress에서 특정 모양의 개체를 인수로 사용하여 호출 된 스텁 함수를 테스트하는 방법은 무엇입니까?

  16. 16

    선택적 세 번째 매개 변수를 사용하여 다른 함수에서 함수를 호출하는 방법은 무엇입니까?

  17. 17

    구조체에있는 함수 포인터를 사용하여 함수를 실행하는 방법은 무엇입니까? (씨)

  18. 18

    콜백에서 구조체의 매개 변수화 된 멤버 함수를 사용하는 방법은 무엇입니까?

  19. 19

    포인터를 사용하여 C의 구조체로 변수를 인쇄하는 방법은 무엇입니까?

  20. 20

    일반 함수 포인터를 템플릿 매개 변수로 사용하는 방법은 무엇입니까?

  21. 21

    함수를 사용하여 모든 구조체 멤버 매개 변수를 변경하는 방법은 무엇입니까?

  22. 22

    자식 함수 인수에서 부모의 매개 변수를 참조하는 방법은 무엇입니까?

  23. 23

    매개 변수를 사용하여 텍스트 영역에서 초기화 함수를 호출하는 방법은 무엇입니까?

  24. 24

    Cython : struct에서 void * 및 함수 포인터를 노출하는 방법은 무엇입니까?

  25. 25

    함수 이름과 매개 변수를 변수로 사용하여 적절한 함수를 호출하는 방법은 무엇입니까? PHP

  26. 26

    JSON 매개 변수로 "returns void"함수를 실행하는 방법은 무엇입니까?

  27. 27

    파이썬에서 너무 많은 매개 변수를 사용하여 SQL Server 저장 프로 시저를 호출하는 방법은 무엇입니까?

  28. 28

    포인터를 전달하여 매개 변수 유형의 고차원 배열로 함수를 호출하는 방법은 무엇입니까?

  29. 29

    확장 메서드에서 매개 변수로 함수를 사용하는 방법은 무엇입니까?

뜨겁다태그

보관