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

回答編集履歴

3

追記

2017/12/29 14:10

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -22,4 +22,15 @@
22
22
  }
23
23
 
24
24
  後略
25
- ```
25
+ ```
26
+
27
+ 追記
28
+ ---
29
+ > 以下のようなfor文を用いたコードを実行したところ、エラーが出てしまいました。
30
+
31
+ 原因と解決策がもろに書いてあります。**まずは表示されたものを読んでください。**
32
+ 単語は日頃カタカナで使うものばかりですし、文法は中学生レベルです。
33
+ > trial.c:7:5: error: 'for' loop initial declarations are only allowed in C99 mode
34
+ > trial.c:7:5: note: use option -std=c99 or -std=gnu99 to compile your code
35
+
36
+ オプションを変えるか、for文の初期化部分を少し書き換えれば良いです。

2

初期値変更

2017/12/29 14:10

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  一番簡単な方法は、whileループをforループに置き換えることだと思います。
2
2
  あまりにも愚直ですが、これなら直感的に記述可能ですね。
3
3
  ```C
4
- for(int i = 0; fgets(tmpline, 256, fp); ++i){
4
+ for(int i = 1; fgets(tmpline, 256, fp); ++i){
5
5
  printf("%d行目: %s", i, tmpline);
6
6
  }
7
7
  ```

1

追記

2017/12/29 13:46

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -4,4 +4,22 @@
4
4
  for(int i = 0; fgets(tmpline, 256, fp); ++i){
5
5
  printf("%d行目: %s", i, tmpline);
6
6
  }
7
+ ```
8
+
9
+ なお、コマンドラインから引数を受け取りたい場合は、次のように書けばよいでしょう。
10
+ ```C
11
+ int main(int argc, char **argv) {
12
+ if(argc < 3) {
13
+ printf("USAGE: .exe filename line_num\n");
14
+ return -1;
15
+ }
16
+
17
+ char *filename = argv[1];
18
+ int row_num = atoi(argv[2]);
19
+
20
+ if(row_num < 1) {
21
+ return -1;
22
+ }
23
+
24
+ 後略
7
25
  ```