###前提・実現したいこと
C言語で構造体Recordを宣言し、それを使用して構造体変数dataを定義し、dataにキーボード入力し、その後データの内容を出力するプログラム
#include <stdio.h>
int main()
{
struct record { char name[10]; int birthday[3]; int gender; }; struct record data; printf("データを入力してください "); printf("名前(性) ->"); scanf( "%s", data.name); printf("生まれた年(西暦) ->"); scanf( "%d", &data.birthday[0]); printf("生まれた月 ->"); scanf( "%d", &data.birthday[1]); printf("生まれた日 ->"); scanf( "%d", &data.birthday[2]); printf("性別(0:男性、1:女性) ->"); scanf( "%d", &data.gender); printf("名前(性):%s\n",data.name); printf("生年月日:"); printf("%d年%d月%d日", data.birthday[0], data.birthday[1], data.birthday[2]); if(data.gender==0) printf("(男性)\n"); else printf("(女性)\n");
}
を作成した。このプログラムを
Record input(void):キーボードから構造体への入力
void output(Record):構造体内容のディスプレイへの表示
main:inputとoutputをそれぞれ一回ずつ呼ぶ
という3つの関数に分割したプログラムにしたいです。
お手数おかけしますがご指導宜しくお願いします。
###発生している問題・エラーメッセージ
main.c:11:26: error: expected ';' after top level declarator
struct record input(void)
^
;
main.c:12:27: error: expected function body after function declarator
void output(struct record):
^
main.c:12:26: error: parameter name omitted
void output(struct record):
^
warning: format specifies type 'char *' but the argument has type
'<dependent type>' [-Wformat]
main.c:26:15: error: use of undeclared identifier 'data'
scanf( "%s", data.name);
^
main.c:28:15: warning: format specifies type 'int *' but the argument has type
'<dependent type>' [-Wformat]
scanf( "%d", &data.birthday[0]);
~~ ^~~~~~~~~~~~~~~~~
main.c:28:16: error: use of undeclared identifier 'data'
scanf( "%d", &data.birthday[0]);
^
main.c:30:15: warning: format specifies type 'int *' but the argument has type
'<dependent type>' [-Wformat]
scanf( "%d", &data.birthday[1]);
~~ ^~~~~~~~~~~~~~~~~
main.c:30:16: error: use of undeclared identifier 'data'
scanf( "%d", &data.birthday[1]);
^
main.c:32:15: warning: format specifies type 'int *' but the argument has type
'<dependent type>' [-Wformat]
scanf( "%d", &data.birthday[2]);
~~ ^~~~~~~~~~~~~~~~~
main.c:32:16: error: use of undeclared identifier 'data'
scanf( "%d", &data.birthday[2]);
^
main.c:34:15: warning: format specifies type 'int *' but the argument has type
'<dependent type>' [-Wformat]
scanf( "%d", &data.gender);
~~ ^~~~~~~~~~~~
main.c:34:16: error: use of undeclared identifier 'data'
scanf( "%d", &data.gender);
^
main.c:35:9: error: use of undeclared identifier 'data'
return data;
^
main.c:38:33: error: function definition is not allowed here
void output(struct record data){
^
main.c:47:2: error: expected '}'
}
^
main.c:22:27: note: to match this '{'
struct record input (void){
^
5 warnings and 11 errors generated.
###ソースコード
C言語
1#include <stdio.h> 2 3 struct record{ 4 char name[10]; 5 int birthday[3]; 6 int gender; 7 8 }; 9 10 11struct record input(void) 12void output(struct record): 13 14int main() 15{ 16 struct record data; 17 18 data = input(); 19 output(data); 20} 21//-------------------------------------------------------------------- 22struct record input (void){ 23 24 printf("データを入力してください "); 25 printf("名前(性) ->"); 26 scanf( "%s", data.name); 27 printf("生まれた年(西暦) ->"); 28 scanf( "%d", &data.birthday[0]); 29 printf("生まれた月 ->"); 30 scanf( "%d", &data.birthday[1]); 31 printf("生まれた日 ->"); 32 scanf( "%d", &data.birthday[2]); 33 printf("性別(0:男性、1:女性) ->"); 34 scanf( "%d", &data.gender); 35 return data; 36 37//-------------------------------------------------------------------- 38 void output(struct record data){ 39 printf("\n名前(性):%s\n",data.name); 40 printf("生年月日:"); 41 printf("%d年%d月%d日", data.birthday[0], data.birthday[1], data.birthday[2]); 42 if(data.gender==0){ 43 printf("(男性)\n"); 44 }else{ 45 printf("(女性)\n"); 46 } 47}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。