私はこれらの3つのファイルを持っています。構造体、関数、ポインタを使用します。 - 名へのポインタを受け取り、アクションCプログラミング:逆参照ポインター
contacts.h
struct Name {
char firstName[31];
char middleInitial[7];
char lastName[36];
};
struct Contacts {
struct Name name;
struct Address address;
struct Numbers numbers;
};
void getName(struct Name*name);
contacts.c
#include <stdio.h>
#include "contacts.h"
void getName(struct Name*name)
{
char yorn;
printf("Please enter the contact's first name: ");
scanf("%s", name->firstName);
printf("Do you want to enter a middle initial(s)? (y or n): ");
scanf("%s", &yorn);
if (yorn == 'y'){
printf("Please enter the contact's middle initial(s): ");
scanf("%s", name->middleInitial);
}
printf("Please enter the contact's last name: ");
scanf("%s", name->lastName);
}
を行い
void getName(Name *)
:これを実行しようとすると
a1ms4.c
#include <stdio.h>
#include "contacts.h"
#include "contacts.c"
struct Name name;
getName(&contact.name);
私はcontacts.cに次のエラーを取得しています:
エラー:私は最小限に抑え :
scanf("%s", name->firstName);
が
^~
[EDIT不完全な型の構造体名へのポインタを参照解除これへのコード:
#include <stdio.h>
struct Name {
char firstName[31];
};
struct Contacts {
struct Name name;
};
void getName(Name*name);
int main(void)
{
struct Contacts contact;
getName(&contact.name);
return 0;
}
void getName(Name*name)
{
char yorn;
printf("Please enter the contact's first name: ");
scanf("%c", name->firstName);
printf("First name: %c\n", name.firstName);
return;
}
これらのエラーが発生する:
1)。エラー:不明なタイプ名Name
ââ
void getName(Name*name);
2)。関数内でmain
â:
警告:暗黙の宣言関数âgetName
â; 012 getline
âを意味しましたか? [-Wimplicit関数宣言]
getName(&contact.name);
3)。
エラー:トップレベルでは未知のタイプ名Name
ââ
void getName(Name*name)
'* .c'ファイルを含めないでください!これまであなたがプロで、あなたがしていることを正確に知るまで。 –
これは割り当てであり、3つのファイルすべてを含めることを希望しました – SaM
エラーはクリアです。名前が不完全な場合は名前タイプを使用できません。すでにcontacts.hヘッダーにNameを完全に宣言しているので、事前宣言を完全に削除することができます。 – StarShine