• ベストアンサー

C言語のファイル読み込み

以前の質問で書いているプログラミングでの延長上質問なのですが、 C言語でファイル名を自分で入力したとします。 使われている拡張子は既知なので、「????.csv」の「????」(後に入力する為、文字数不明、数値混じり、コンマも混じる)だけを格納したいのですが、どうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.9

strcpy()の使い方を確認しましょう。

agara830
質問者

お礼

あー・・・中身が逆ですね・・・・・。 皆さん、すいませんでした。 ありがとうございます。万事解決しました。 こんな簡単な事に2度手間3度手間をかけさせて本当に申し訳ありませんでした。 今後聞く時は自分の書いた文を出して質問するようにします。

その他の回答 (8)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.8

結局のところ「今どうやっていて何が問題なんですか」としか言いようがないわけですがとりあえず 1点突っ込んでおきます. #1 へのお礼では「キーボード入力で[test.5.30]などと打った時、上手く格納できず」と書かれていますが, #3 への補足では「数列混じりの文字列(例:test.5.30.csv)をキーボード入力で格納する」となっています. どのようなことをしたいのか, 正確に表現してください.

agara830
質問者

お礼

回答ありがとうございます

agara830
質問者

補足

申し訳ありません。 色々試してみているのですが、今は下のような形です。 char fname[30]; char infname[30]; printf("読み込むファイル名を入力してください\n"); gets(fname); strcpy(fname,infname); strcat(infname,".csv"); inp=fopen(infname,"r"); if(inp==NULL){ printf( "%sファイルが開けません\n",infname); return -1; }else{ そして[test.5.28]と入力すると、 フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ€=xク.csvファイルが開けません と帰ってきます。

  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.7

>キーボード入力で[test.5.30]などと打った時、上手く格納できず、よくわからない文字列になってしまいます。 #6の方も書かれていますが、実際にどうやってうまく格納できないのですか。

agara830
質問者

お礼

回答ありがとうございます。

agara830
質問者

補足

申し訳ありません。 自分が書いている形はANo.8さんのところに書きました。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.6

>数列混じりの文字列(例:test.5.30.csv)をキーボード入力で格納する方法です。普通に格納しようとすると完全に文字化けのようになってしまいます。どうすればそのままの形で格納できるのでしょうか? で、今はどのようにやっていますか? scanf()で指定がおかしいとか、バッファオーバーフローしているとか…… どうやっているのかが不明では適切な対処方法も厳しいかと。 # まぁ、私ならfgets()とかで受けますかねぇ。

agara830
質問者

お礼

回答ありがとうございます。

agara830
質問者

補足

申し訳ありません。 自分が書いている形はANo.8さんのところに書きました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

方針はいいですが文字列リテラルを書き換えちゃダメです~>#3. 別の領域にコピーしてやってください.

agara830
質問者

お礼

回答ありがとうございます。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.4

あ、size_tはダメですね。signedでないと。@ANo.3

agara830
質問者

お礼

回答ありがとうございます。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

こんなのとか。

agara830
質問者

お礼

回答ありがとうございます。

agara830
質問者

補足

すいませんでした。自分の説明下手かつ不足ですね。 もうひとつわからないことがありまして、 数列混じりの文字列(例:test.5.30.csv)をキーボード入力で格納する方法です。普通に格納しようとすると完全に文字化けのようになってしまいます。どうすればそのままの形で格納できるのでしょうか?

回答No.2

strcpyでバッファにコピーして strlenで文字列長を取得して、 格納してある文字がピリオドかどうか後ろから一つずつ見ていって、 ピリオドがあった所に\0(文字列終端)を埋めればいいんじゃないでしょうか?

agara830
質問者

お礼

ありがとうございます。 それで、拡張子を切り取ることはできそうですね。

  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.1

申し訳ないのですが質問の意味がわかりません。 入力された「????」を格納すればいいだけの話じゃないんでしょうか? もしかして、後で入力はされるんだけどまだ入力されてない「????」を格納したい。ということなんでしょうか。

agara830
質問者

お礼

ごめんなさい、上の補足は嘘でした。 数列混じりの文字列を上手く格納できません。 キーボード入力で[test.5.30]などと打った時、上手く格納できず、よくわからない文字列になってしまいます。

agara830
質問者

補足

そうですね、まだ入力されてないのでどんな文字列・数列か分からないものなので、どうしたらいいかわからない。ということです。 文字数が分かっていれば、また、「.」が途中で使われていないということなら出来るのですが・・・・

関連するQ&A

  • C言語でファイルの入出力

    C言語についての質問です。 統計学のシュミレータを作っていまして 大量の数値データ(1000程度)のデータを入力する必要があるのですが scanfなどで入力要求するには、数に無理がありますので 外部テキストファイルからプログラムに読み込みたいのですが 方法が分かりません。 希望としては、まずテキストファイルに 1000個の数値データを入力しておいて (数値データのみをコンマとか改行で区切ったものをあらかじめ作成しておく) それを1000個の配列 int data[1000]に 順番にインポートできるようにしたいです。 データ数は1000個で固定、すべてint型でOKです。 数値として処理したいので 文字列としてインポートしてしまうのはダメです。 あくまでint型の数値として考えてください。 回答よろしくお願いします。

  • c言語プログラミングHELP!

    c言語でプログラムを組んでるんですが、どうしてもわからないものがありまして、 まず一つ目がキーボードから英小文字を一つ入力し、その文字を大文字に変換して出力するプログラミングです。結果がまずひとつの英小文字を入力して、入力した文字と、大文字に変換した文字を出力するプログラミングです。 ちなみにヒントは'a'=97,'A'=65です 二つ目が二桁の16進数('41'から'49','50'から'59')を入力すると対応する文字を表示するプログラミングです。また、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒントは入力は一つの数値か、二つの文字か?だそうです。) 結果は二桁の16進数('41'から'49','50'から'59')を入力して、文字コードの二桁の数字と文字を出力するプログラミングです。 お願いします。

  • C言語のプログラミングについての質問です

    C言語の課題で数値を入力したらその数に40+して二乗するプログラミングを作りたいのですがソースがいまいちわかりません どなたかご教授お願いします

  • c言語:ファイルの入出力

    2つの行列をファイルから読み込み、その積をファイルに出力するプログラムを 作りたいのですが、参考書を読んでもよくわからないので教えて頂きたいです。 テキストファイルの文字列のコピーなどは、参考書を見てできたのですが、 ファイル入出力を使った数値の計算がいまいち理解できませんでした。 注意点は以下の通りです。 ・ファイルはカンマ区切りのテキストファイルとし、入力ファイルはエクセルで作成。拡張子は.csv。 ・ファイル名はキーボードから入力できるようにする。 よろしくお願いします。

  • C言語でバイナリファイルの読み込み

    C言語のプログラミングに関する質問です。 x個(分かっている数)のfloat型の数値が入ったバイナリファイルを読み込んで、 要素数[x]のfloat型配列として扱うにはどういったコードを書けばよいのでしょうか? どなたかご教授いただければ幸いです。

  • C言語プログラミング

    あなたは何歳ですか。 (数値を入力) 10年後は○○歳ですね。 と表示されるプログラミングをお願いします。C言語でお願いします

  • C言語のプログラミングについてです><

    今C言語のプログラミングの勉強をしているのですが、わからないプログラムがでてきたので教えてくださる方がいらっしゃれば、ご教授願いたいです。 数当てゲームの作成 1~9(0は除く)のなかから4つの異なる数字をランダムで選択し、4桁の数をつくる。ユーザは4つの数字の並びを入力して、作られた数を当てる。 ユーザの入力した数と作られた数を比較して、同じ数字が同じ桁にある場合は"Hit"というヒントを与える。また、同じ数字が異なる桁にある場合は"Blow"というヒントを与える。すなわち、作られた数が5849で、ユーザが4829という数値を入力した場合、"2 Hit 1 Blow"というヒントが表示されるようにする。 ユーザは10回まで、入力するチャンスが与えられる。 といった感じのプログラミングなんですが、C言語初心者である自分にはまったくわかりません; ; どなたかわかる方がいらっしゃれば、助けていただけないでしょうか?よろしくお願いします!

  • C言語 CSVファイルの読み込み

    C言語でCSVファイルから数字を読み込み、それを計算するというプログラムを作りたいのですが、CSVファイルについて全く知識が無く、加えてCSVファイルを利用したプログラムを作るのが初めての為、勝手がわかりません。 まずCSVファイルというのは、 1.2,2.3,3.4 4.5,5.6,6.7 7.8,8.9,9.0 といった数字(文字列)をカンマで区切ったテキストファイルですよね? それをどのようなプログラムで読み込むのでしょうか? 例えば、上記の数字を読み込み、 a. 1.2+4.5+7.8=x b. 8.9-5.6-2.3=y c. 3.4*6.7*9.0=z と計算する場合のプログラムを教えていただきたいです。 よろしくお願いします。

  • C言語 プログラミング

    C言語プログラミングで分からない問題があるのですが、 nを入力して、0~nまでの数値のうち、 (1)偶数のみ足しなさい (2)3の倍数のみ足しなさい の2つのプログラムがわからいのですがどなたか教しえていただけませんか?

  • C言語のプログラミングについてです。

    C言語のプログラミングについて教えて欲しいです。 scanf関数を用いて、キーボードから文字列(最大30文字)を読み込み、これをchar型配列に格納します。最大10個までの文字列が入力された場合か、「END」が入力された時、入力された逆順で画面に表示するプログラム。作成しなさい。 〈完成例〉 adjm 10mdjp jpd-4 njad' END njad jpd-4 10mdjp adjm

専門家に質問してみよう