原因不明なエラー終了してしまいます。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ビギナー

原因不明なエラー終了してしまいます。

#1

投稿記事 by ビギナー » 13年前

現在C言語を苦Cで勉強中なのですが以下のプログラムがうまく動作しません
コンパイルはエラーなく通るのですが実行してみたところ名前の入力をすると強制的に
終了していまいます。
よろしければ拝見していただけないでしょうか?

コード:

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

typedef struct {
		char name[256];
		int age;
		int sex;
} People;

void InputPeople(People *data);
void ShowPeople(People data);

int main(void)
{
	int i,count,datasize;
	People *data;
	
	datasize = 10;
	data = (People*)malloc(sizeof(People) * datasize);
	while (1) {
		InputPeople(&data[count]);
		if (data[count].age == -1) break;
		count++;
		
		if (count >= datasize) {
			datasize += 10;
			data = (People*)realloc(data,sizeof(People) * datasize);
		}
	}
	
	for (i = 0;i < 3;i++) {
		  ShowPeople(data[i]);
	}
	return 0;
}


void InputPeople(People *data)
{
	
	printf("名前:");
	scanf("%s",&data->name);
	printf("年齢:");
	scanf("%d",&data->age);
	printf("性別(1-男性、2-女性):");
	scanf("%d",&data->sex);
	printf("\n");
}

void ShowPeople(People data)
{
	char sex[16];
	
	printf("名前:%s\n",data.name);
	printf("年齢:%d\n",data.age);
	
	if (data.sex == 1) {
		strcpy(sex,"男性");
	} else {
		strcpy(sex,"女性");
	}
	
	printf("性別:%s\n",sex);
	printf("\n");
}

	
 

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 原因不明なエラー終了してしまいます。

#2

投稿記事 by h2so5 » 13年前

ヒント: countの初期値

ビギナー

Re: 原因不明なエラー終了してしまいます。

#3

投稿記事 by ビギナー » 13年前

単純なミスでした
countの初期値を書き忘れていました
h2s05さんありがとうございます
正しくは↓の通りになるんですね
ありがとうございます
また何かありましたよろしくお願いいたします

コード:

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

typedef struct {
	char name[256];
	int age;
	int sex;
} People;

void InputPeople(People *data);
void ShowPeople(People data);

int main(void)
{
	int i,count,datasize;
	People *data;
	
	datasize = 10;
	data = (People*)malloc(sizeof(People) * datasize);
	
	count = 0;
	while (1) {
		InputPeople(&data[count]);
		if (data[count].age == -1) break;
		count++;
		
		if (count >= datasize) {
			datasize += 10;
			data = (People*)realloc(data,sizeof(People) * datasize);
		}
	}
	
	for (i = 0;i < count;i++) {
		ShowPeople(data[i]);
	}

	free(data);
	
	return 0;
}

void InputPeople(People *data)
{
	printf("名前:");
	scanf("%s",data->name);
	printf("年齢:");
	scanf("%d",&data->age);
	printf("性別(1-男性、2-女性):");
	scanf("%d",&data->sex);
	printf("\n");
}

void ShowPeople(People data)
{
	char sex[16];
	
	printf("名前:%s\n",data.name);
	printf("年齢:%d\n",data.age);
	
	if (data.sex == 1) {
		strcpy(sex,"男性");
	} else {
		strcpy(sex,"女性");
	}
	
	printf("性別:%s\n",sex);
	printf("\n");
}

閉鎖

“C言語何でも質問掲示板” へ戻る