ページ 1 / 1
コアダンプ
Posted: 2015年8月23日(日) 18:37
by sim
コード:
#include<stdio.h>
#define NUM 5
typedef struct Student
{
int no; /*番号*/
char name[10]; /*氏名*/
int score; /*得点*/
}Student;
/*int search(student date[],int no);*/
int main(void)
{
Student student[NUM] =
{
{ 1,"taro.s",100 },
{ 2,"jiro.y",80 },
{ 4,"saburo.h",65 },
{ 5,"shiro.k",20 },
{ 8,"goro.s",93 },
};
int i;
int ban;
printf("───────────────────────────────────\n");
printf("番号│ 氏名 │ 得点\n");
printf("───────────────────────────────────\n");
for (i = 0; i < NUM; i++)
{
printf("%4d│%10s│%5d\n", student[i].no, student[i].name, student[i].score);
}
printf("───────────────────────────────────\n");
printf("検索する番号を入力してください:");
scanf("%d", &ban);
if (0 <= ban&&NUM > ban)
{
printf("番号:%d\n", student[ban].no);
printf("氏名:%s\n", student[ban].name);
printf("得点:%d\n", student[ban].score);
return 0;
}
else
{
return -1;
}
}
引数で指定された番号と一致する情報が見つかったら返す。なかったら-1を返し、見つかりませんと出力する。
コアダンプが出て出力できません。
Re: コアダンプ
Posted: 2015年8月23日(日) 19:07
by box
sim さんが書きました:
引数で指定された番号と一致する情報が見つかったら返す。なかったら-1を返し、見つかりませんと出力する。
コアダンプの件はさておき、「引数で指定された番号」というのを表現するコードが見当たりませんし、
「見つかりません」と出力するようになっていませんね。ここはどうしましょうか。
また、「番号」というのは、
0~4
ですか?(今のコードはそうなっている)
それとも
1, 2, 4, 5, 8
ですか?
Re: コアダンプ
Posted: 2015年8月23日(日) 19:13
by sim
引数で指定された情報を出力する。入力を1だったら、番号:1 氏名:taro.s 得点:100 のようにします。
1.2.4.5.8も同様に。意外だったら-1を返し、見つかりません。とする。
よろしくお願いします。
Re: コアダンプ
Posted: 2015年8月23日(日) 19:21
by みけCAT
sim さんが書きました:コアダンプが出て出力できません。
再現できません。
Wandboxで実行すると、警告も出ずに正常終了しました。
また、ソースコードにも怪しい場所が見当たりません。
意図したコードを正しくコンパイル・実行しているか(例えばエディタで保存を忘れていないか、コンパイルするファイル名を間違えていないか、など)、
環境がおかしくなっていないかを確認してください。
Re: コアダンプ
Posted: 2015年8月23日(日) 19:25
by みけCAT
sim さんが書きました:引数で指定された情報を出力する。入力を1だったら、番号:1 氏名:taro.s 得点:100 のようにします。
1.2.4.5.8も同様に。意外だったら-1を返し、見つかりません。とする。
よろしくお願いします。
banを入力した後
1. 「見つかった」フラグを表す変数を用意し、0で初期化する
2. iを0からNUMまで(NUMは含まない)ループする
2-1. student
.noとbanが等しければ、そのstudentの情報を出力し、「見つかった」フラグを表す変数に1を代入する
等しくなければ何もしない
3. 「見つかった」フラグを表す変数が0なら、「見つかりません」と出力する
0でないなら何もしない
という動作をするプログラムを組めばいいと思います。
Re: コアダンプ
Posted: 2015年8月23日(日) 19:44
by sim
Linuxでやるとコアダンプになります。
Re: コアダンプ
Posted: 2015年8月23日(日) 20:20
by box
コード:
#include <stdio.h>
#define NUM (5)
typedef struct {
int no; /* 番号 */
char name[10]; /* 氏名 */
int score; /* 得点 */
} Student;
int search(Student *data, int no)
{
int i;
for (i = 0; i < NUM; i++) {
if (data[i].no == no) {
return i;
}
}
return -1;
}
int main(void)
{
Student student[NUM] = {
{ 1, "taro.s", 100 },
{ 2, "jiro.y", 80 },
{ 4, "saburo.h", 65 },
{ 5, "shiro.k", 20 },
{ 8, "goro.s", 93 },
};
int ban, i;
printf("────────────\n");
printf("番号│ 氏 名 │ 得点\n");
printf("────────────\n");
for (i = 0; i < NUM; i++) {
printf("%4d│%10s│%5d\n",
student[i].no, student[i].name, student[i].score);
}
printf("────────────\n");
printf("検索する番号を入力してください:");
scanf("%d", &ban);
if ((ban = search(student, ban)) != -1) {
printf("番号:%d\n", student[ban].no);
printf("氏名:%s\n", student[ban].name);
printf("得点:%d\n", student[ban].score);
}
else {
printf("見つかりませんでした\n");
}
return 0;
}
Re: コアダンプ
Posted: 2015年8月23日(日) 20:44
by みけCAT
sim さんが書きました:Linuxでやるとコアダンプになります。
Ideoneおよび
Coiruで実行しましたが、正常終了しました。
また、DebianおよびRaspbianで実行しても正常終了しました。