行m列の任意のデータの処理を行うプログラムで,
列ごとの統計を行うためにm列目のデータを取り出したいのですが,うまくいきません.
どのようなコードを書けばいいでしょうか?
自分で作ってみたのは以下のようなプログラムです(ファイルを開いて→m列目の読み込みの部分)
EOFを使っているためか,行数のiには全データ数が入ってしまいます.
void main (void)
{
FILE* fp;
int i, j;
i=0, j=0;
char FilePath[500];
char Folder[100];
char File[50];
printf("Folder Name:");
scanf("%s",&Folder);
printf("File Name:");
scanf("%s",&File);
sprintf(FilePath,"%s/%s",Folder,File);
if(( fp = fopen (FilePath,"r")) == NULL){
printf("cannot open '%s'\n", FilePath);
exit(1);
} //ここまではうまく動きます
while (fscanf(fp, "%lf", &A[i][0]) != EOF{
i++;
}
while (fscanf(fp, "%lf", &A[0][j]) != EOF){
j++;
}
printf("A[%d][%d]", i, j);
int n, m; //n,mはこの後for文で使いたいので登場してもらいました
printf("input 'n':");
scanf("%d", &n);
printf("input 'm':");
scanf("%d", &m);
}
No.5ベストアンサー
- 回答日時:
>どのようなコードを書けばいいでしょうか?
http://okwave.jp/qa/q7114321.html #3
読み込み時に配列に格納しないで、
文字列として1行読み込んでから、(数値化し)配列に格納する例です。
「m列目のデータ」の前には、m - 1 個の空白があるので、それをカウントし数値化します。
(ただし、文字列には空白が連続しないこと)
「実数」を「整数」に、「コンマ」を「空白」に置き換えればよいかと。
http://www.bohyoh.com/CandCPP/C/Library/fgets.html
http://www.bohyoh.com/CandCPP/C/Library/atoi.html
回答ありがとうございます!コメントが遅くなってすみません.
配列に格納するタイミングが違うんですね!!
その後何とかプログラムできました.
No.4
- 回答日時:
確かにそうなりますね。
>#3iがどこまで増えて行くのか…というので、バッファオーバーランもありそうなコードではありますが…
A[][]の詳細が不明ですのでなんとも…。
# その後のjについても同様。
で……A[][]にちゃんと読み込めるコードにもなっていなかったりしますね。
エラー処理は別として…ファイルから2次元配列に読み込む。
なんてコードは検索するといろいろ見つかると思います。
回答ありがとうございます.
これではA[][]に読み込めないんですか?!
それ自体「どこがどう」とすぐわからないので,まだまだ勉強不足です….
ネットや参考書などもっと探してみますね.
No.3
- 回答日時:
数字以外, より正確には「%lf に適合しない」入力が与えられると
fscanf(fp, "%lf", &A[i][0])
は 0 を返しますが, EOF は負の数である (当然 0 でもない) ので
fscanf(fp, "%lf", &A[i][0]) != EOF
の結果は 1 となり, したがって無限ループになる (現実的には何らかの実行時エラーで異常終了しそう) というのが「正しい動作」ではないでしょうか>#2.
このようなプログラムを作った背景にある「理屈」を説明できますか?
この回答への補足
回答ありがとうございます.
正しい動作の理屈はなるほど!と思えました.
プログラム作成の理屈は,正直説明できません.
参考書などを見ながら使えそうな文法を探して,理解できたものもありましたが
理解できなかったものも
そのままイメージであてはめていったようなものなので….
かなり「こう動いてくれたらうれしい」という感じで書いていった部分はあります.
勉強不足は間違いないのでもっとじっくり取り組もうと思います.
No.2
- 回答日時:
読み込んでいるファイルの内容はどんな感じなんでしょう?
>while (fscanf(fp, "%lf", &A[i][0]) != EOF{
>i++;
>}
>while (fscanf(fp, "%lf", &A[0][j]) != EOF){
>j++;
>}
の先のwhileループはどこで抜けることを期待しているのでしょう?
# 今は…おそらく全部読み込んでますよね。
データファイルに意図的にエラーになるように書いていない限り。
# たとえば、各行の最後に数字以外が書かれているとか。<もっとも、これだと次のfscanf()次第でオワるのですが…。
この回答への補足
回答ありがとうございます.
データは例えば以下のような形です.
テキスト形式で,特に意味のある数字ではありません.
1 65 3
2 83 71
20 4 39
これだと3行3列なので,このデータはA[3][3]だと判断して
表示させたいです.
fscanf(fp,"%lf",&A[0][j]) では,&A[0][j]としたら
jに列数が入ってくれるのではないかと思ったのですが,違うようで….
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
C言語で特定列だけを抽出して配列に格納し、出力したいです。 読み込みファイル(read.txt) 0
C言語・C++・C#
-
c言語でのfscanfについて
C言語・C++・C#
-
C言語 ファイルの指定された行を表示
C言語・C++・C#
-
-
4
C言語で特定の行を抽出する方法を教えてください。
C言語・C++・C#
-
5
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
6
テキストファイルから文字列を読み込んで二次元配列に格納するには
C言語・C++・C#
-
7
C言語でのCSVファイルの読み出し方法
C言語・C++・C#
-
8
特定の文字列が一致する行から、文字列を抽出する方法
C言語・C++・C#
-
9
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
10
配列を使わずに、変数名を動的にループで回したい
C言語・C++・C#
-
11
C言語---ファイルに出力したデータをすべて消去する方法
C言語・C++・C#
-
12
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
13
関数から配列を返すには?
C言語・C++・C#
-
14
char str[256]の256の意味は?
C言語・C++・C#
-
15
fopenでファイル名に、変数を使いたい
C言語・C++・C#
-
16
scanfが2回使えない・・・?;
C言語・C++・C#
-
17
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
18
fgetsで2行目から文字化け
C言語・C++・C#
-
19
改行を読み飛ばす
C言語・C++・C#
-
20
CSVファイル作成
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
printf による16進表示について
-
C++で指定文字列のカウント方法...
-
C言語のプログラムで、途中で止...
-
#defineが使用するメモリ領域に...
-
リストの作成と出力(C言語)
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
プログラミング初心者です。 Py...
-
「指定されたキャストは有効で...
-
強連結判定を行うプログラムに...
-
有効数字について 以前質問をし...
-
intとlongは同じ?
-
C言語 エラーの原因がわからな...
-
2÷3などの余りについて
-
if と配列の組み合わせ
-
C言語を実行すると-infが出てき...
-
構文エラー";"が型の前にあり...
-
マイナスからプラスへ転じた時...
-
C言語での引数の省略方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Enterキーを押されたら次の処理...
-
#defineが使用するメモリ領域に...
-
C言語で複数列のデータを1列の...
-
printf による16進表示について
-
【C言語】全角文字の配列を、全...
-
空白を含んだ文字列がうまく格...
-
char型2つを結合し、short型に...
-
reallocでエラー
-
矢印キーを押下してコンソール...
-
C言語でのCSVファイルの読み出...
-
C++で指定文字列のカウント方法...
-
終了条件Ctrl+zについて,結果表...
-
リストの作成と出力(C言語)
-
ファイル操作で全角空白を消す
-
エラーについて質問です。
-
fscanfの使い方
-
WinInetのInternetOpenUrl関数...
-
C言語のプログラムで、途中で止...
-
構造体メンバの初期化
-
タイムカードのシステムを作り...
おすすめ情報