質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

1461閲覧

ファイルを読み込んでくれない

na-mi

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/09/02 17:01

内容:ファイル(sample.txt)を開き、
身長(164、174…)が一番大きい人のデータをコマンドプロンプトで表示

以下のソースコードをコマンドプロンプトで
cl kadai0902-1.c

kadai0902-1.c sample.txt

で実行したら
ファイルを読み込んでくれません。
どうすればよいでしょうか?
コンパイルしたときエラーコードは出ていません。
ちなみにVisual Studio 2015でコードを書きました。

#include "stdio.h"
#include "stdlib.h"

int main(int argc, char *argv[])
{

FILE *fp; char name[][3] = { '\0' }; int id[10]; int tensu[10]; int i, j, max, max_id; max_id = 0; if (argc != 2) { printf("エラー1"); exit(1); } if ((fp = fopen(argv[1], "r")) == NULL) { printf("エラー2"); exit(1); } i = 0; while (fscanf(fp, "%d,%d,%s", &id[i], &tensu[i], name[i]) != EOF) { i++; } max = tensu[0]; for (j = 1; j < i; j++) { if (max < tensu[j]) { max = tensu[j]; max_id = j; } } printf("%d\n",max); fclose(fp); return 0;

}

ファイルの中身

1 164 a
2 174 b
3 173 c
4 197 d
5 142 e
6 175 f
7 196 g
8 180 h
9 123 i
10 199 j

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

char name[][3]はコンパイル通りますか?・・・・領域サイズが分からないのでエラーになると思いますが?また、ちょっと気になったのでprintf()直後にexit()などでプログラムが終了するとと表示されないまま終了する可能性があります。(未確認です)なので、fflush(stdout);などで出力しましょう。また、fscanf()は読み込んだ項目数を返してくるので、EOFと比較するより項目数(提示されたプログラムなら3)と比較した方がいいと思います。何れにしてもどこまでプログラムが進んでいるか、デバッガで確認した方がいいと思います。

投稿2016/09/03 12:38

編集2016/09/03 12:42
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2016/09/03 13:15

> exit()などでプログラムが終了するとと表示されないまま終了する可能性があります。 exit()だとオープンしているファイルは全部flushしてくれるので大丈夫です。 _exit()だとしません(クローズのみ)。
cateye

2016/09/04 01:03

>exit()だとオープンしているファイルは全部flushしてくれるので大丈夫です。・・・勘違いでしたありがとうございます。
guest

0

"ファイルを読み込んでくれません”
では分かりません。
”エラー1"、”エラー2”は表示されていないのですか?
whileの中で、i が加算されていない事は確認されたんですか?

1行ずづ、確実に自分が考えている通りに実行されているかを確認してください。
答えになっていなくて、ゴメンナサイ。

ひょっとして
kadai0902-1.c
を実行しようとしてません?
それだったら、ムリです。

投稿2016/09/03 02:11

編集2016/09/03 12:16
nob.

総合スコア711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

コンパイルした時にエラーが出ていなかったのなら、そのフォルダに kadai0902-1.exeという実行ファイルができていると思います。これを使って

kadai0902-1.exe sample.txt

と実行してみてください。拡張子 exe は省略可能なので「kadai0902-1 sample.txt」でも同様の結果になります。

投稿2016/09/02 17:45

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

na-mi

2016/09/03 13:02

回答ありがとうございます。 参考にしてやってみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問