重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

構造体に自作関数から値を入力したいのですが、エラーがでて詰まっています。コンパイルエラーの原因は●の行で
signed char * 型として定義されているので int は渡せない
と表示されました。
何故このエラーが表示されるのか、また対処法を教えて下さると幸いです。。

#include<stdio.h>
#include<string.h>


typedef struct
{
char l_name[256];
int l_age;
int l_height;
}HUMAN;


Input (HUMAN*);


main()
{
HUMAN *l_phuman;
Input(l_phuman);


}

Input(HUMAN* l_phuman)
{
char names[20];
int ages;
int heights;


printf("名前を入力してください\n");
scanf("%s" , names);

printf("歳を入力してください\n");
scanf("%d" , &ages);

printf("歳を入力してください\n");
scanf("%d" , &heights);



●strcpy(*l_phuman->l_name,names);
l_phuman->l_age=ages;
l_phuman->l_height=heights;

printf("%s" , l_phuman->l_name);
printf("%d" , l_phuman->l_age);
printf("%d" , l_phuman->l_height);
}
尚指示としてHUMAN *l_phumanを使って構造体に入れなければなりません。。

A 回答 (4件)

質問の内容と違いますが、気なった点が1点あります。



構造体の実体が存在していないようです。

main()
{
HUMAN *l_phuman;
Input(l_phuman);

に誤りが有ります。良く確認してください。
    • good
    • 0
この回答へのお礼

ありがとうございました、構造体を実態化させず、
渡す指定も無いまま
ポインタで渡そうとしていてエラーになっていたんですね。。

ポインタの使い方以前の問題でした、ありがとうございました。

お礼日時:2007/05/24 12:03

逆にお尋ねしますが、


strcpy(*l_phuman->l_name,names);
ここでなぜ*をつけていますか?

何でも*をつければよいと言うわけではありませんよ?
    • good
    • 0

ANo.1ですが、間違っていました。



>この2つを良く見てみましょう、l_phuman->l_nameの使い方が違います。

と書きましたが、

この2つを良く見てみましょう、l_phuman->l_nameの使い方が違っています。

でした。
    • good
    • 0

>strcpy(*l_phuman->l_name,names);


>printf("%s" , l_phuman->l_name);

この2つを良く見てみましょう、l_phuman->l_nameの使い方が違います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!