teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

インデント修正

2020/05/29 12:12

投稿

rokku
rokku

スコア12

title CHANGED
@@ -1,1 +1,1 @@
1
- C言語:fread関数のエラー再現方法
1
+ C言語:fread関数
body CHANGED
File without changes

5

インデント修正

2020/05/29 12:12

投稿

rokku
rokku

スコア12

title CHANGED
File without changes
body CHANGED
@@ -10,16 +10,16 @@
10
10
  ```ここに言語を入力
11
11
  #include<stdio.h>
12
12
 
13
- typedef struct
13
+ typedef struct
14
14
  {
15
- char name[16]; /* 名前 */
15
+ char name[16]; /* 名前 */
16
- long hp; /* HP */
16
+ long hp; /* HP */
17
- long mp; /* MP */
17
+ long mp; /* MP */
18
- char level; /* レベル */
18
+ char level; /* レベル */
19
- char strength; /* 強さ */
19
+ char strength; /* 強さ */
20
- char speed; /* 素早さ */
20
+ char speed; /* 素早さ */
21
- char wisdom; /* 賢さ */
21
+ char wisdom; /* 賢さ */
22
- long experience; /* 経験値 */
22
+ long experience; /* 経験値 */
23
23
  }S_STATUS;
24
24
 
25
25
  void main(void) {
@@ -27,19 +27,19 @@
27
27
  S_STATUS character[3] = { 0 };
28
28
  int rtc = 0;
29
29
 
30
- fp = fopen("SaveData.bin","rb");
30
+ fp = fopen("SaveData.bin", "rb");
31
31
 
32
32
  if (fp == NULL) {
33
33
  printf("ファイルオープンエラー");
34
34
  }
35
35
 
36
- while(1){
36
+ while (1) {
37
37
 
38
- if ((feof(fp) != 0)) { /* feof関数 */
38
+ if ((feof(fp) != 0)) { /* feof関数 */
39
- break; /* 0 = ファイルの終端ではない */
39
+ break; /* 0 = ファイルの終端ではない */
40
- } /* 0 != ファイルの終端 */
40
+ } /* 0 != ファイルの終端 */
41
41
 
42
- rtc = fread(character, sizeof(S_STATUS), 1,fp);
42
+ rtc = fread(character, sizeof(S_STATUS), 1, fp);
43
43
 
44
44
  if (rtc < 1) {
45
45
  printf("ファイル読み込みエラー");

4

インデント修正

2020/05/29 07:32

投稿

rokku
rokku

スコア12

title CHANGED
File without changes
body CHANGED
@@ -13,8 +13,8 @@
13
13
  typedef struct
14
14
  {
15
15
  char name[16]; /* 名前 */
16
- long hp; /* HP */
16
+ long hp; /* HP */
17
- long mp; /* MP */
17
+ long mp; /* MP */
18
18
  char level; /* レベル */
19
19
  char strength; /* 強さ */
20
20
  char speed; /* 素早さ */

3

インデント修正

2020/05/29 07:30

投稿

rokku
rokku

スコア12

title CHANGED
File without changes
body CHANGED
@@ -15,8 +15,8 @@
15
15
  char name[16]; /* 名前 */
16
16
  long hp; /* HP */
17
17
  long mp; /* MP */
18
- char level; /* レベル */
18
+ char level; /* レベル */
19
- char strength; /* 強さ */
19
+ char strength; /* 強さ */
20
20
  char speed; /* 素早さ */
21
21
  char wisdom; /* 賢さ */
22
22
  long experience; /* 経験値 */

2

インデント修正

2020/05/29 07:29

投稿

rokku
rokku

スコア12

title CHANGED
File without changes
body CHANGED
@@ -7,16 +7,17 @@
7
7
 
8
8
  該当のソースコード
9
9
  main.c
10
+ ```ここに言語を入力
10
11
  #include<stdio.h>
11
12
 
12
13
  typedef struct
13
14
  {
14
15
  char name[16]; /* 名前 */
15
- long hp; /* HP */
16
+ long hp; /* HP */
16
- long mp; /* MP */
17
+ long mp; /* MP */
17
- char level; /* レベル */
18
+ char level; /* レベル */
18
19
  char strength; /* 強さ */
19
- char speed; /* 素早さ */
20
+ char speed; /* 素早さ */
20
21
  char wisdom; /* 賢さ */
21
22
  long experience; /* 経験値 */
22
23
  }S_STATUS;
@@ -34,9 +35,9 @@
34
35
 
35
36
  while(1){
36
37
 
37
- if ((feof(fp) != 0)) { /* feof関数 */
38
+ if ((feof(fp) != 0)) { /* feof関数 */
38
- break; /* 0 = ファイルの終端ではない */
39
+ break; /* 0 = ファイルの終端ではない */
39
- } /* 0 != ファイルの終端 */
40
+ } /* 0 != ファイルの終端 */
40
41
 
41
42
  rtc = fread(character, sizeof(S_STATUS), 1,fp);
42
43
 
@@ -48,5 +49,6 @@
48
49
 
49
50
  fclose(fp);
50
51
  }
52
+ ```
51
53
  試したこと
52
54
  fread関数の戻り値についてインターネットで調べた結果、fread関数の第3引数部分の個数が返ってくるという記載があった。

1

行番号の削除

2020/05/29 07:27

投稿

rokku
rokku

スコア12

title CHANGED
File without changes
body CHANGED
@@ -7,43 +7,46 @@
7
7
 
8
8
  該当のソースコード
9
9
  main.c
10
- 1 #include<stdio.h>
10
+ #include<stdio.h>
11
- 2
12
- 3 typedef struct
13
- 4 {
14
- 5 char name[16]; /* 名前 */
15
- 6 long hp; /* HP */
16
- 7 long mp; /* MP */
17
- 8 char level; /* レベル */
18
- 9 char strength; /* 強さ */
19
- 10 char speed; /* 素早さ */
20
- 11 char wisdom; /* 賢さ */
21
- 12 long experience; /* 経験値 */
22
- 13 }S_STATUS;
23
- 14
24
- 15 void main(void) {
25
- 16 FILE *fp = NULL;
26
- 17 S_STATUS character[3] = { 0 };
27
- 18 int rtc = 0;
28
- 19
29
- 20 fp = fopen("SaveData.bin","rb");
30
- 21
31
- 22 if (fp == NULL) {
32
- 23 printf("ファイルオープンエラー");
33
- 24 }
34
- 25
35
- 26 while(1){
36
- 27
37
- 28 rtc = fread(character, sizeof(S_STATUS), 1,fp);
38
- 29
39
- 30 if (rtc < 1) {
40
- 31 printf("ファイル読み込みエラー");
41
- 32 break;
42
- 33 }
43
- 34 }
44
- 35
45
- 36 fclose(fp);
46
- 37 }
47
11
 
12
+ typedef struct
13
+ {
14
+ char name[16]; /* 名前 */
15
+ long hp; /* HP */
16
+ long mp; /* MP */
17
+ char level; /* レベル */
18
+ char strength; /* 強さ */
19
+ char speed; /* 素早さ */
20
+ char wisdom; /* 賢さ */
21
+ long experience; /* 経験値 */
22
+ }S_STATUS;
23
+
24
+ void main(void) {
25
+ FILE *fp = NULL;
26
+ S_STATUS character[3] = { 0 };
27
+ int rtc = 0;
28
+
29
+ fp = fopen("SaveData.bin","rb");
30
+
31
+ if (fp == NULL) {
32
+ printf("ファイルオープンエラー");
33
+ }
34
+
35
+ while(1){
36
+
37
+ if ((feof(fp) != 0)) { /* feof関数 */
38
+ break; /* 0 = ファイルの終端ではない */
39
+ } /* 0 != ファイルの終端 */
40
+
41
+ rtc = fread(character, sizeof(S_STATUS), 1,fp);
42
+
43
+ if (rtc < 1) {
44
+ printf("ファイル読み込みエラー");
45
+ break;
46
+ }
47
+ }
48
+
49
+ fclose(fp);
50
+ }
48
51
  試したこと
49
52
  fread関数の戻り値についてインターネットで調べた結果、fread関数の第3引数部分の個数が返ってくるという記載があった。