1

そのため、クラスの割り当てがあり、構造体、2 つの関数、およびメイン関数があるはずです。構造体にはこれらの 3 つの変数が必要であり、関数にはそれらの名前が必要であり、メインにはこれらの 3 行のみを含めることができます。これは私にとって初めての C プログラムで、私たちは一年中 C++ を使ってきたので、少し戸惑っています。プログラムを作成してコンパイルしますが、値を入力すると、出力は基本的にランダムな値になります。

//Joshua    
#include <stdio.h>

struct Person
{
    char name[100];
    int age;
    float gpa;
};

void fill_person(struct Person* per)
{
    char name[100];
    printf("Enter a name.\n");
    fgets(name, 100, stdin);
    per->name = name;

    int age;
    printf("Enter an age. \n");
    scanf("%d", &age);
    per->age = age;

    float gpa;
    printf("Enter a GPA. \n");
    scanf("%f", &gpa);
    per->gpa = gpa;

}

void show_person(struct Person* per)
{
    char name[100];
    printf("The person's name is %c\n", &name);

    int age;
    printf("Their age is %d\n", &age);

    int gpa;
    printf("Their GPA is %f", &gpa);
}

int main()
{
    struct Person per;
    fill_person(&per);
    show_person(&per);
}
4

6 に答える 6

1

printfステートメントをチェックインしてくださいshow_person— 各文字列の後に間違った種類の変数を渡していて、渡された値は渡した値とは無関係ですstruct

あなたの周りのものfgetsも、あなたが期待するようには機能しません。たとえばchar string1[100], string2[100]; string2 = string1;、string1 の内容を string 2 にコピーしません。

于 2013-10-22T03:30:43.647 に答える