電子書籍の厳選無料作品が豊富!

以前の質問で書いているプログラミングでの延長上質問なのですが、
C言語でファイル名を自分で入力したとします。

使われている拡張子は既知なので、「????.csv」の「????」(後に入力する為、文字数不明、数値混じり、コンマも混じる)だけを格納したいのですが、どうすればいいでしょうか?

A 回答 (9件)

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

    • good
    • 0
この回答へのお礼

あー・・・中身が逆ですね・・・・・。

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

お礼日時:2012/06/02 22:51

結局のところ「今どうやっていて何が問題なんですか」としか言いようがないわけですがとりあえず 1点突っ込んでおきます.



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

この回答への補足

申し訳ありません。
色々試してみているのですが、今は下のような形です。

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ファイルが開けません
と帰ってきます。

補足日時:2012/06/02 14:26
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/03 16:03

>キーボード入力で[test.5.30]などと打った時、上手く格納できず、よくわからない文字列になってしまいます。



#6の方も書かれていますが、実際にどうやってうまく格納できないのですか。

この回答への補足

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

補足日時:2012/06/02 14:18
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/02 14:18

>数列混じりの文字列(例:test.5.30.csv)をキーボード入力で格納する方法です。

普通に格納しようとすると完全に文字化けのようになってしまいます。どうすればそのままの形で格納できるのでしょうか?

で、今はどのようにやっていますか?
scanf()で指定がおかしいとか、バッファオーバーフローしているとか……
どうやっているのかが不明では適切な対処方法も厳しいかと。
# まぁ、私ならfgets()とかで受けますかねぇ。

この回答への補足

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

補足日時:2012/06/02 14:13
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/02 14:13

方針はいいですが文字列リテラルを書き換えちゃダメです~>#3.



別の領域にコピーしてやってください.
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/02 14:14

あ、size_tはダメですね。

signedでないと。@ANo.3
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/02 14:14

こんなのとか。

「C言語のファイル読み込み」の回答画像3

この回答への補足

すいませんでした。自分の説明下手かつ不足ですね。

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

補足日時:2012/05/31 20:43
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/02 14:14

strcpyでバッファにコピーして


strlenで文字列長を取得して、
格納してある文字がピリオドかどうか後ろから一つずつ見ていって、
ピリオドがあった所に\0(文字列終端)を埋めればいいんじゃないでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/05/31 20:35

申し訳ないのですが質問の意味がわかりません。


入力された「????」を格納すればいいだけの話じゃないんでしょうか?

もしかして、後で入力はされるんだけどまだ入力されてない「????」を格納したい。ということなんでしょうか。

この回答への補足

そうですね、まだ入力されてないのでどんな文字列・数列か分からないものなので、どうしたらいいかわからない。ということです。

文字数が分かっていれば、また、「.」が途中で使われていないということなら出来るのですが・・・・

補足日時:2012/05/31 19:12
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/05/31 20:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!