リストに3個のデータが入っています。表示が1個しか表示されない
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,000
リストに3個のデータが入っています。while文を自分で作って表示させたいのですが、表示が1個しか表示されないです。どこを修正すればいいですか。
それと性別を男、女、その他で表すにはどうしたらいいですか。
よろしくおねがいいたします。
コード
//リスト構造
#include <stdlib.h>
#include <stdio.h>
typedef struct _member{
int id; //ID
char* name; //名前
int age; //年齢
int sex; //性別 男:0, 女:1, その他:2
struct _member* next; //次の要素のポインタ
} member;
member *listAdd(member* list, int id, char* name, int age, int sex)
{
member* node = (member*)malloc(sizeof(member));//メモリの確保
if(node == NULL)
return NULL;
//データの追加
node->id = id;
node->name = name;
node->age = age;
node->sex = sex;
node->next = NULL;
//データをリストに追加する
if(list == NULL)
return node;
member* search = list;
while (search->next != NULL)
search = search->next;
search->next = node;
return list;
}
void listAllDelete(member* list)
{
member *tmp = list;
while (list->next != NULL){
tmp = list->next;
list->next = tmp->next;
free(tmp);
}
free(list);
}
int main(){
member* list = NULL;
list = listAdd(list, 1000, "AKARI", 13, 1);
list = listAdd(list, 1001, "YUI", 14, 1);
list = listAdd(list, 1002, "KYOKO", 14, 1);
while(list!=NULL){
printf("id:%d %s %d才 %d \n",list->id,list->name,list->age,list->sex);
list++;
};
listAllDelete(list);
return 0;
}
/*実行結果
C:\MinGW\users\chap09\kadai>gcc -I. -o LST7g LST7g.c -Wall
C:\MinGW\users\chap09\kadai>LST7g
id:1000 AKARI 13才 1
C:\MinGW\users\chap09\kadai>
*/
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
こんな感じですかね。
enum {
MAN, WOMAN, OTHER,
};
int print_member(const member *arg) {
char *sex;
switch(arg->sex) {
case MAN: sex = "man"; break;
case WOMAN: sex = "woman"; break;
case OTHER: sex = "other"; break;
}
return printf("id:%d %s %d才 %s \n",
arg->id, arg->name, arg->age, sex
);
}
int main(){
member* list = NULL;
list = listAdd(list, 1000, "AKARI", 13, WOMAN);
list = listAdd(list, 1001, "YUI", 14, WOMAN);
list = listAdd(list, 1002, "KYOKO", 14, WOMAN);
for(member *tmp = list; tmp != NULL; tmp = tmp->next) {
print_member(tmp);
}
listAllDelete(list);
return 0;
}
実行結果
id:1000 AKARI 13才 woman
id:1001 YUI 14才 woman
id:1002 KYOKO 14才 woman
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/10/07 14:57
2017/10/07 14:58
『\t』で入りますよ。
2017/10/07 15:03
ありがとうございます。