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

回答編集履歴

6

誤記修正

2019/04/26 14:53

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  - このforループ1回も回らないのでは?
2
- iの初期値=0、終了条件 iが0より大きい
2
+ iの初期値=0、~~終了条件~~継続条件 iが0より大きい
3
3
 
4
4
  ```C
5
5
  for(i=0;i>0;i++){

5

誤記修正

2019/04/26 14:53

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  while(fscanf(fp,"%f %f", &((*lv)->time), &((*lv)->score)) > 1){
40
40
  lv = (struct lvlv**)realloc(lv, sizeof(struct lvlv *) * i);
41
- (*lv) = (struct lvlv*)malloc(sizeof(struct lvlv));
41
+ *(lv + i) = (struct lvlv*)malloc(sizeof(struct lvlv));
42
42
  i++;
43
43
  }
44
44
 
@@ -49,5 +49,6 @@
49
49
 
50
50
  free(*(lv + j));
51
51
  }
52
+ free(*(lv + j));
52
53
  free(lv);
53
54
  ```

4

誤記修正...orz

2019/04/26 10:52

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -44,10 +44,10 @@
44
44
 
45
45
  int j=0;
46
46
  for(j=0; j<i; j++) {
47
- printf("%f ", (*(lv + i))->time);
47
+ printf("%f ", (*(lv + j))->time);
48
- printf("%f\n", (*(lv + i))->score);
48
+ printf("%f\n", (*(lv + j))->score);
49
49
 
50
- free(*(lv + i));
50
+ free(*(lv + j));
51
51
  }
52
52
  free(lv);
53
53
  ```

3

誤記修正

2019/04/26 10:48

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  ```C
5
5
  for(i=0;i>0;i++){
6
- fscanf(fp,"%f %f",lv[i].time,lv[i].score);
6
+ fscanf(fp,"%f %f", lv[i].time,lv[i].score);
7
7
  }
8
8
  ```
9
9
 
@@ -36,7 +36,7 @@
36
36
  lv = (struct lvlv**)malloc(sizeof(struct lvlv *));
37
37
  (*lv) = (struct lvlv*)malloc(sizeof(struct lvlv));
38
38
 
39
- while(fscanf(fp,"%f %f", (*lv)->time, (*lv)->score) > 1){
39
+ while(fscanf(fp,"%f %f", &((*lv)->time), &((*lv)->score)) > 1){
40
40
  lv = (struct lvlv**)realloc(lv, sizeof(struct lvlv *) * i);
41
41
  (*lv) = (struct lvlv*)malloc(sizeof(struct lvlv));
42
42
  i++;

2

誤記修正と追記

2019/04/26 10:46

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,15 +1,15 @@
1
1
  - このforループ1回も回らないのでは?
2
2
  iの初期値=0、終了条件 iが0より大きい
3
3
 
4
- ```
4
+ ```C
5
5
  for(i=0;i>0;i++){
6
6
  fscanf(fp,"%f %f",lv[i].time,lv[i].score);
7
7
  }
8
8
  ```
9
9
 
10
- - メモリ壊してますよ
10
+ - 確保していない範囲のメモリを参照していますよ ~~メモリ壊してますよ~~
11
11
 
12
- ```
12
+ ```C
13
13
  struct lvlv *lv;
14
14
  //略
15
15
  lv = (struct lvlv*)malloc(sizeof(struct lvlv));
@@ -21,4 +21,33 @@
21
21
  //この時点でi=1なので、lv[i]はmallocで確保していない領域にアクセスしている
22
22
  printf("%f\n",lv[i].time);
23
23
 
24
+ ```
25
+
26
+ ----
27
+
28
+ 愚直に書くとこんな感じ?
29
+ ※ゴリゴリのC言語書くの何年振りかわからないので間違ってる可能性あり。
30
+
31
+ ```C
32
+ //略
33
+ struct lvlv **lv;
34
+ //略
35
+ i=0;
36
+ lv = (struct lvlv**)malloc(sizeof(struct lvlv *));
37
+ (*lv) = (struct lvlv*)malloc(sizeof(struct lvlv));
38
+
39
+ while(fscanf(fp,"%f %f", (*lv)->time, (*lv)->score) > 1){
40
+ lv = (struct lvlv**)realloc(lv, sizeof(struct lvlv *) * i);
41
+ (*lv) = (struct lvlv*)malloc(sizeof(struct lvlv));
42
+ i++;
43
+ }
44
+
45
+ int j=0;
46
+ for(j=0; j<i; j++) {
47
+ printf("%f ", (*(lv + i))->time);
48
+ printf("%f\n", (*(lv + i))->score);
49
+
50
+ free(*(lv + i));
51
+ }
52
+ free(lv);
24
53
  ```

1

誤記修正

2019/04/26 10:44

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,4 +1,4 @@
1
- 1. このforループ1回も回らないのでは?
1
+ - このforループ1回も回らないのでは?
2
2
  iの初期値=0、終了条件 iが0より大きい
3
3
 
4
4
  ```
@@ -7,7 +7,7 @@
7
7
  }
8
8
  ```
9
9
 
10
- 2. メモリ壊してますよ
10
+ - メモリ壊してますよ
11
11
 
12
12
  ```
13
13
  struct lvlv *lv;