• ベストアンサー

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

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

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答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% (1626/5665)
回答No.7

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

agara830
質問者

お礼

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

agara830
質問者

補足

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

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答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% (1626/5665)
回答No.1

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

agara830
質問者

お礼

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

agara830
質問者

補足

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

関連するQ&A