내가 정말로 필요한 것은 이러한 종류의 함수를 호출자에게 반환하는 방법에 대한 예제입니다. 함수와 매개 변수의 유형을 제외하고는 내 코드와 관련이 없습니다.
세 명의 사용자 정의 사람의 이름과 나이를 읽을 수 있도록 아래에이 함수를 작성했습니다.
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
문을? 나는 그것에 대한 예제를 찾을 수 없습니다 (누구든지 예제가 있다면, 그 예제로 코드를 스스로 알아낼 수 있다고 생각합니다)?
사전에 도움을 주셔서 감사합니다. 정말 감사합니다.
에서 readData
와 findMiddleAge
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] 삭제
몇 마디 만하겠습니다