#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define REGISTER(n, number, name) \
do { \
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", n); \
pointer_root = register_student(pointer_root, number, name); \
} while(0)
#define TAIL 0
struct student {
int number; //学生番号
char name[10]; //苗字
struct student *next;
};
struct student *register_student(struct student *head, int number, char *name)
{
struct student
*new
= (struct student
*)malloc(sizeof (struct student
)); new->number = number;
new->next = head;
return new;
}
int main(void)
{
int in_number;
char in_name[10];
struct student *pointer_root = TAIL;
struct student *pointer_student;
printf("今からデータを自動的に登録して、リスト構造を作成します。\n");
REGISTER(1, 175, "tanaka");
REGISTER(2, 176, "yamada");
REGISTER(3, 177, "nakamura");
REGISTER(4, 178, "aoki");
REGISTER(5, 179, "katoh");
printf("名簿に登録された学生のリストを表示します。\n"); pointer_student = pointer_root;
while (pointer_student != TAIL) {
printf("%d %s\n", pointer_student
->number
, pointer_student
->name
); pointer_student = pointer_student->next;
}
printf("リスト構造の最初に新しい学生を追加します。\n"); printf("追加する学生番号と氏名を入力してください。"); scanf("%d %s", &in_number
, in_name
);
pointer_root = register_student(pointer_root, in_number, in_name);
printf("学生が追加登録されたので、名簿に登録された学生のリストを表示します。\n"); pointer_student = pointer_root;
while (pointer_student != TAIL) {
printf("%d %s\n", pointer_student
->number
, pointer_student
->name
); pointer_student = pointer_student->next;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBSRUdJU1RFUihuLCBudW1iZXIsIG5hbWUpIFwKICAgIGRvIHsgXAogICAgICAgIHByaW50ZigiICVkIOeVquebruOBruWtpueUn+OBruWtpuexjeeVquWPt+OBqOawj+WQjeOCkueZu+mMsuOBl+OBvuOBmeOAglxuIiwgbik7IFwKICAgICAgICBwb2ludGVyX3Jvb3QgPSByZWdpc3Rlcl9zdHVkZW50KHBvaW50ZXJfcm9vdCwgbnVtYmVyLCBuYW1lKTsgXAogICAgfSB3aGlsZSgwKQojZGVmaW5lIFRBSUwgMAoKc3RydWN0IHN0dWRlbnQgewogICAgaW50IG51bWJlcjsgLy/lrabnlJ/nlarlj7cKICAgIGNoYXIgbmFtZVsxMF07IC8v6IuX5a2XCiAgICBzdHJ1Y3Qgc3R1ZGVudCAqbmV4dDsKfTsKCnN0cnVjdCBzdHVkZW50ICpyZWdpc3Rlcl9zdHVkZW50KHN0cnVjdCBzdHVkZW50ICpoZWFkLCBpbnQgbnVtYmVyLCBjaGFyICpuYW1lKQp7CiAgICBzdHJ1Y3Qgc3R1ZGVudCAqbmV3ID0gKHN0cnVjdCBzdHVkZW50ICopbWFsbG9jKHNpemVvZiAoc3RydWN0IHN0dWRlbnQpKTsKICAgIG5ldy0+bnVtYmVyID0gbnVtYmVyOwogICAgc3RyY3B5KG5ldy0+bmFtZSwgbmFtZSk7CiAgICBuZXctPm5leHQgPSBoZWFkOwogICAgcmV0dXJuIG5ldzsKfQoKaW50IG1haW4odm9pZCkKewogICAgaW50IGluX251bWJlcjsKICAgIGNoYXIgaW5fbmFtZVsxMF07CiAgICBzdHJ1Y3Qgc3R1ZGVudCAqcG9pbnRlcl9yb290ID0gVEFJTDsKICAgIHN0cnVjdCBzdHVkZW50ICpwb2ludGVyX3N0dWRlbnQ7CgogICAgcHJpbnRmKCLku4rjgYvjgonjg4fjg7zjgr/jgpLoh6rli5XnmoTjgavnmbvpjLLjgZfjgabjgIHjg6rjgrnjg4jmp4vpgKDjgpLkvZzmiJDjgZfjgb7jgZnjgIJcbiIpOwoKICAgIFJFR0lTVEVSKDEsIDE3NSwgInRhbmFrYSIpOwogICAgUkVHSVNURVIoMiwgMTc2LCAieWFtYWRhIik7CiAgICBSRUdJU1RFUigzLCAxNzcsICJuYWthbXVyYSIpOwogICAgUkVHSVNURVIoNCwgMTc4LCAiYW9raSIpOwogICAgUkVHSVNURVIoNSwgMTc5LCAia2F0b2giKTsKCiAgICBwcmludGYoIlxuIik7CiAgICBwcmludGYoIuWQjeewv+OBq+eZu+mMsuOBleOCjOOBn+WtpueUn+OBruODquOCueODiOOCkuihqOekuuOBl+OBvuOBmeOAglxuIik7CiAgICBwb2ludGVyX3N0dWRlbnQgPSBwb2ludGVyX3Jvb3Q7CgogICAgd2hpbGUgKHBvaW50ZXJfc3R1ZGVudCAhPSBUQUlMKSB7CiAgICAgICAgcHJpbnRmKCIlZCAgJXNcbiIsIHBvaW50ZXJfc3R1ZGVudC0+bnVtYmVyICwgcG9pbnRlcl9zdHVkZW50LT5uYW1lKTsKICAgICAgICBwb2ludGVyX3N0dWRlbnQgPSBwb2ludGVyX3N0dWRlbnQtPm5leHQ7CiAgICB9CgogICAgcHJpbnRmKCJcbiIpOwogICAgcHJpbnRmKCLjg6rjgrnjg4jmp4vpgKDjga7mnIDliJ3jgavmlrDjgZfjgYTlrabnlJ/jgpLov73liqDjgZfjgb7jgZnjgIJcbiIpOwogICAgcHJpbnRmKCLov73liqDjgZnjgovlrabnlJ/nlarlj7fjgajmsI/lkI3jgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIIiKTsKICAgIHNjYW5mKCIlZCAlcyIsICZpbl9udW1iZXIgLCBpbl9uYW1lKTsKCiAgICBwb2ludGVyX3Jvb3QgPSByZWdpc3Rlcl9zdHVkZW50KHBvaW50ZXJfcm9vdCwgaW5fbnVtYmVyLCBpbl9uYW1lKTsKCiAgICBwcmludGYoIlxuIik7CiAgICBwcmludGYoIuWtpueUn+OBjOi/veWKoOeZu+mMsuOBleOCjOOBn+OBruOBp+OAgeWQjeewv+OBq+eZu+mMsuOBleOCjOOBn+WtpueUn+OBruODquOCueODiOOCkuihqOekuuOBl+OBvuOBmeOAglxuIik7CiAgICBwb2ludGVyX3N0dWRlbnQgPSBwb2ludGVyX3Jvb3Q7CgogICAgd2hpbGUgKHBvaW50ZXJfc3R1ZGVudCAhPSBUQUlMKSB7CiAgICAgICAgcHJpbnRmKCIlZCAgJXNcbiIsIHBvaW50ZXJfc3R1ZGVudC0+bnVtYmVyLCBwb2ludGVyX3N0dWRlbnQtPm5hbWUpOwogICAgICAgIHBvaW50ZXJfc3R1ZGVudCA9IHBvaW50ZXJfc3R1ZGVudC0+bmV4dDsKICAgIH0KICAgIHJldHVybiAwOwp9
prog.c: In function ‘main’:
prog.c:54: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result
今からデータを自動的に登録して、リスト構造を作成します。
1 番目の学生の学籍番号と氏名を登録します。
2 番目の学生の学籍番号と氏名を登録します。
3 番目の学生の学籍番号と氏名を登録します。
4 番目の学生の学籍番号と氏名を登録します。
5 番目の学生の学籍番号と氏名を登録します。
名簿に登録された学生のリストを表示します。
179 katoh
178 aoki
177 nakamura
176 yamada
175 tanaka
リスト構造の最初に新しい学生を追加します。
追加する学生番号と氏名を入力してください。
学生が追加登録されたので、名簿に登録された学生のリストを表示します。
1234 hoge
179 katoh
178 aoki
177 nakamura
176 yamada
175 tanaka