質問編集履歴
3
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
解決
|
2
|
-
|
1
|
+
間違えて消してしまいました。もうしわけございません。、、、、、、、、、、、
|
2
解決
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,56 +1,2 @@
|
|
1
|
-
C言語を勉強中です。下の構造体を用いて構造体配列を動的に確保後、ファイル「a.txt」から情報を読込み,標準出力するプログラムを作成しています。
|
2
|
-
|
3
|
-
「a.txt」の中身は
|
4
|
-
14001 Aoki M 50
|
5
|
-
14002 Ishida F 60
|
6
|
-
14003 Uehara M 70
|
7
|
-
14004 Endoh F 80
|
8
|
-
14005 Ogawa F 95
|
9
|
-
14006 Katoh M 85
|
10
|
-
14007 Kimura F 55
|
11
|
-
14008 Kuwata M 95
|
12
|
-
14009 Keda F 70
|
13
|
-
14010 Kobayashi F 100
|
14
|
-
|
1
|
+
解決
|
15
|
-
そこで下のコードを書いたのですが、
|
16
|
-
・・・・・
|
17
|
-
```C
|
18
|
-
#include<stdio.h>
|
19
|
-
#include<stdlib.h>
|
20
|
-
|
21
|
-
typedef struct student{
|
22
|
-
int id;
|
23
|
-
char name[20];
|
24
|
-
char gender[1];
|
25
|
-
int point;
|
26
|
-
} STUDENT;
|
27
|
-
|
28
|
-
int main(void){
|
29
|
-
STUDENT * st = malloc(sizeof(STUDENT)*10); /* malloc 関数で動的確保(10 領域) */
|
30
|
-
|
31
|
-
|
32
|
-
/* ファイルオープンの処理 */
|
33
|
-
FILE*fp=fopen("02student.txt", "r");
|
34
|
-
|
35
|
-
int i;
|
36
|
-
|
37
|
-
|
2
|
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
38
|
-
for(i=0; i<10; i++){
|
39
|
-
fscanf(fp, "%d %s %s %d", &st->id, st->name, st->gender, &st->point);
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
/* 標準出力処理(ポインタ変数 st から各領域を参照し,値を確認) */
|
44
|
-
for(i=0; i<10; i++){
|
45
|
-
printf("%d %s %s %d\n", st->id, st->name, st->gender, st->point);
|
46
|
-
}
|
47
|
-
/* ファイルクローズの処理 */
|
48
|
-
fclose(fp);
|
49
|
-
/* メモリの解放処理 */
|
50
|
-
free(st);
|
51
|
-
|
52
|
-
return 0;
|
53
|
-
}
|
54
|
-
```
|
55
|
-
・・・・・
|
56
|
-
14010 Kobayashi F 100が10回出力されるだけでした。for(i=0; i<10; i++)は使わなければなりません。すべての文字列を出力するにはどうすればいいでしょうか?ご教授お願いします。できるなら原型を保ったままでお願いします。
|
1
ソースアップしなおしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
です。
|
15
15
|
そこで下のコードを書いたのですが、
|
16
16
|
・・・・・
|
17
|
+
```C
|
17
18
|
#include<stdio.h>
|
18
19
|
#include<stdlib.h>
|
19
20
|
|
@@ -25,14 +26,15 @@
|
|
25
26
|
} STUDENT;
|
26
27
|
|
27
28
|
int main(void){
|
28
|
-
STUDENT * st = malloc(sizeof(STUDENT)*10); /* 動的確保(10 領域) */
|
29
|
+
STUDENT * st = malloc(sizeof(STUDENT)*10); /* malloc 関数で動的確保(10 領域) */
|
29
|
-
|
30
|
+
|
31
|
+
|
30
32
|
/* ファイルオープンの処理 */
|
31
|
-
FILE*fp=fopen("
|
33
|
+
FILE*fp=fopen("02student.txt", "r");
|
32
|
-
|
34
|
+
|
33
35
|
int i;
|
34
|
-
|
36
|
+
|
35
|
-
/* ファイル入力処理(ポインタ変数 st を各領域を参照し,格納)
|
37
|
+
/* ファイル入力処理(ポインタ変数 st を各領域を参照し,格納) */
|
36
38
|
for(i=0; i<10; i++){
|
37
39
|
fscanf(fp, "%d %s %s %d", &st->id, st->name, st->gender, &st->point);
|
38
40
|
}
|
@@ -49,5 +51,6 @@
|
|
49
51
|
|
50
52
|
return 0;
|
51
53
|
}
|
54
|
+
```
|
52
55
|
・・・・・
|
53
56
|
14010 Kobayashi F 100が10回出力されるだけでした。for(i=0; i<10; i++)は使わなければなりません。すべての文字列を出力するにはどうすればいいでしょうか?ご教授お願いします。できるなら原型を保ったままでお願いします。
|