関数間ポインタがわかりません(汗)
Posted: 2015年6月01日(月) 14:40
//=============================================================================
//
// ポインタ処理 [main.cpp]
//
//=============================================================================
#include <stdio.h>
#include <string.h>
//=============================================================================
// マクロ定義
//=============================================================================
#define MAX_NAME_FULL (256) // 氏名文字最大数
#define MAX_NAME_LAST (128) // 苗字文字最大数
#define MAX_NAME_FIRST (128) // 名前文字最大数
#define MAX_DATA (3) // データ最大値
//=============================================================================
// 個人データの構造体
//=============================================================================
typedef struct
{
char aNameFull[MAX_NAME_FULL]; // 氏名
int nAge; // 年齢
float fHeight; // 身長
float fWeight; // 体重
} PersonalData;
//=============================================================================
// プロトタイプ宣言
//=============================================================================
void InputData(PersonalData *pData);
void OutputData(PersonalData *pData);
//=============================================================================
// メイン関数
//=============================================================================
void main(void)
{
PersonalData aPersonalData[MAX_DATA];
// データ入力
InputData(&aPersonalData[0]);
// データ出力
OutputData(&aPersonalData[0]);
// キー入力待ち
printf("*** 何かキーを押してください ***\n");
rewind(stdin);
getchar();
}
//=============================================================================
// データ入力
//=============================================================================
void InputData(PersonalData *pData)
{
char aNameLast[MAX_NAME_LAST];
char aNameFirst[MAX_NAME_FIRST];
printf("+------------------------------+\n");
printf("| 個人データを入力してください |\n");
printf("+------------------------------+\n");
printf("\n");
// アドレスを代入
pData = &aPersonalData[0];
for(int nCnt = 0; nCnt < MAX_DATA; nCnt++)
{
printf("苗字> ");
scanf("%s", &aNameLast[0]);
printf("名前> ");
scanf("%s", &aNameFirst[0]);
strcpy(&pData->aNameFull[0], &aNameLast[0]);
strcat(&pData->aNameFull[0], " ");
strcat(&pData->aNameFull[0], &aNameFirst[0]);
printf("年齢> ");
scanf("%d", &pData->nAge);
printf("身長> ");
scanf("%f", &pData->fHeight);
printf("体重> ");
scanf("%f", &pData->fWeight);
printf("\n");
pData++;
}
}
//=============================================================================
// データ出力
//=============================================================================
void OutputData(PersonalData *pData)
{
printf("+------------------------+\n");
printf("| 個人データを表示します |\n");
printf("+------------------------+\n");
printf("\n");
// アドレスを代入
pData = &aPersonalData[0];
for(int nCnt = 0; nCnt < MAX_DATA; nCnt++)
{
printf("氏名:%s\n", &pData->aNameFull[0]);
printf("年齢:%d\n", pData->nAge);
printf("身長:%5.1f\n", pData->fHeight);
printf("体重:%5.1f\n", pData->fWeight);
printf("\n");
pData++;
}
return;
}
// アドレスを代入
pData = &aPersonalData[0];
ここの部分が定義されていないとエラーが出てしまいます…
どうすればよいですか?
//
// ポインタ処理 [main.cpp]
//
//=============================================================================
#include <stdio.h>
#include <string.h>
//=============================================================================
// マクロ定義
//=============================================================================
#define MAX_NAME_FULL (256) // 氏名文字最大数
#define MAX_NAME_LAST (128) // 苗字文字最大数
#define MAX_NAME_FIRST (128) // 名前文字最大数
#define MAX_DATA (3) // データ最大値
//=============================================================================
// 個人データの構造体
//=============================================================================
typedef struct
{
char aNameFull[MAX_NAME_FULL]; // 氏名
int nAge; // 年齢
float fHeight; // 身長
float fWeight; // 体重
} PersonalData;
//=============================================================================
// プロトタイプ宣言
//=============================================================================
void InputData(PersonalData *pData);
void OutputData(PersonalData *pData);
//=============================================================================
// メイン関数
//=============================================================================
void main(void)
{
PersonalData aPersonalData[MAX_DATA];
// データ入力
InputData(&aPersonalData[0]);
// データ出力
OutputData(&aPersonalData[0]);
// キー入力待ち
printf("*** 何かキーを押してください ***\n");
rewind(stdin);
getchar();
}
//=============================================================================
// データ入力
//=============================================================================
void InputData(PersonalData *pData)
{
char aNameLast[MAX_NAME_LAST];
char aNameFirst[MAX_NAME_FIRST];
printf("+------------------------------+\n");
printf("| 個人データを入力してください |\n");
printf("+------------------------------+\n");
printf("\n");
// アドレスを代入
pData = &aPersonalData[0];
for(int nCnt = 0; nCnt < MAX_DATA; nCnt++)
{
printf("苗字> ");
scanf("%s", &aNameLast[0]);
printf("名前> ");
scanf("%s", &aNameFirst[0]);
strcpy(&pData->aNameFull[0], &aNameLast[0]);
strcat(&pData->aNameFull[0], " ");
strcat(&pData->aNameFull[0], &aNameFirst[0]);
printf("年齢> ");
scanf("%d", &pData->nAge);
printf("身長> ");
scanf("%f", &pData->fHeight);
printf("体重> ");
scanf("%f", &pData->fWeight);
printf("\n");
pData++;
}
}
//=============================================================================
// データ出力
//=============================================================================
void OutputData(PersonalData *pData)
{
printf("+------------------------+\n");
printf("| 個人データを表示します |\n");
printf("+------------------------+\n");
printf("\n");
// アドレスを代入
pData = &aPersonalData[0];
for(int nCnt = 0; nCnt < MAX_DATA; nCnt++)
{
printf("氏名:%s\n", &pData->aNameFull[0]);
printf("年齢:%d\n", pData->nAge);
printf("身長:%5.1f\n", pData->fHeight);
printf("体重:%5.1f\n", pData->fWeight);
printf("\n");
pData++;
}
return;
}
// アドレスを代入
pData = &aPersonalData[0];
ここの部分が定義されていないとエラーが出てしまいます…
どうすればよいですか?