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

質問編集履歴

2

コメントありがとうございます。コマンドラインの打つのはわかりましたがまたエラーになってしまいました。超初心者なので変なところで間違えているかもしれません。よろしくお願いします。

2021/01/20 22:44

投稿

ys003
ys003

スコア1

title CHANGED
File without changes
body CHANGED
@@ -5,11 +5,14 @@
5
5
  ### 発生している問題・エラーメッセージ
6
6
 
7
7
  ``
8
- file format not recognized
8
+ アドバイスをくださった方々ありがとうございます
9
+ gcc ファイル名.c でコンパイルすると無事にコンパイルできて、
9
- treating as linker script
10
+ ./a.exe C:sample11-1.txt
10
- 言われて読んくれません
11
+ 打ったのすが反応がありません
11
- ```
12
+ (何も表示せずにプログラムが終わってしまっています)
13
+ コマンドライン引数でもらったデータをcharに変換することができていないのかもと思いますが調べてもよく分かりませんでした。
12
14
 
15
+
13
16
  ### 該当のソースコード
14
17
 
15
18
  ```c言語
@@ -19,14 +22,15 @@
19
22
  #include <string.h>
20
23
  #define MAX_DATA 1000
21
24
 
22
- int main(int argc, char argv[]) {
25
+ int main(int argc, char *argv) {
23
26
  if (argc != 2) { printf("使用法: %s <文字列>\n", argv[0]); return 1; }
24
27
 
25
28
  char buf[256]; double weight[5]; double sum; int i, n; sum = 0;
26
29
  FILE *fp;
30
+ char *filename;
27
- char *filename = "argv[2]";
31
+ *filename = argv[1];
28
32
  fp = fopen(filename, "r");
29
- if (fp == NULL) { printf("ファイル%sが開けません.\n", filename); return 1; } ー
33
+ if (fp == NULL) { printf("ファイル%sが開けません.\n", filename); return 1; } //ファイルオプンのエラー
30
34
  for (n = 0; n < MAX_DATA; n++) {
31
35
  if (fgets(buf, 256, fp) == NULL) break;
32
36
  weight[n] = atof(buf);
@@ -40,12 +44,7 @@
40
44
 
41
45
  ### 試したこと
42
46
 
43
- textファイルの保存場所を変えて試してみました
44
- コンパイルの際は gcc ファイル名.c C:\sample11-1.txt と打ちましたが、
45
- C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:C:\sample11-1.txt: file format not recognized; treating as linker script
46
- C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:C:\sample11-1.txt:1: syntax error
47
- collect2.exe: error: ld returned 1 exit status
48
- と表示されてコンパイルができませんでした。
47
+ ./a.exe C:\sample11-1.txt で打ちました
49
48
 
50
49
  ### 補足情報(FW/ツールのバージョンなど)
51
50
 

1

不慣れな質問で申し訳ありません。ソースコードをはりました。よろしくお願いします。

2021/01/20 22:44

投稿

ys003
ys003

スコア1

title CHANGED
File without changes
body CHANGED
@@ -14,12 +14,39 @@
14
14
 
15
15
  ```c言語
16
16
  ソースコード
17
+ #include <stdio.h>
18
+ #include <stdlib.h>
19
+ #include <string.h>
20
+ #define MAX_DATA 1000
21
+
22
+ int main(int argc, char argv[]) {
23
+ if (argc != 2) { printf("使用法: %s <文字列>\n", argv[0]); return 1; }
24
+
25
+ char buf[256]; double weight[5]; double sum; int i, n; sum = 0;
26
+ FILE *fp;
27
+ char *filename = "argv[2]";
28
+ fp = fopen(filename, "r");
29
+ if (fp == NULL) { printf("ファイル%sが開けません.\n", filename); return 1; } ー
30
+ for (n = 0; n < MAX_DATA; n++) {
31
+ if (fgets(buf, 256, fp) == NULL) break;
32
+ weight[n] = atof(buf);
33
+ sum += weight[n];
34
+ }
35
+ fclose(fp);
36
+ printf("平均 = %5.1lf\n", sum/5);
37
+ return 0;
38
+ }
17
39
  ```
18
40
 
19
41
  ### 試したこと
20
42
 
21
- ここに問題に対して試したことを記載しください
43
+ textファイルの保存場所を変えて試してみました
44
+ コンパイルの際は gcc ファイル名.c C:\sample11-1.txt と打ちましたが、
45
+ C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:C:\sample11-1.txt: file format not recognized; treating as linker script
46
+ C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:C:\sample11-1.txt:1: syntax error
47
+ collect2.exe: error: ld returned 1 exit status
48
+ と表示されてコンパイルができませんでした。
22
49
 
23
50
  ### 補足情報(FW/ツールのバージョンなど)
24
51
 
25
- ここにより詳細な情報記載しください。
52
+ Visual studio code 使っています