• ベストアンサー

連番の数字を含む文字列の作成

プログラム結果を連番のファイル名がついたファイルに出力したいと考えています。 fopen(file_name,"-") ; でのファイル名file_nameを01.txt, 02.txtという風に変化させるのだと 思うのですが、連番の数字を含む文字列の作成方法がわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 連番の数字自体はどこか(とりあえず直近には変数)にあるとして。 「連番の数字を含む文字列」を作成するのであれば、一番楽なのはsprintfではないでしょうか? ヒントとしては、「%02dとか%03dとか」。 sprintf自体は、適宜ネットなどで仕様を調べてみてください。

tach_77777
質問者

お礼

sprintfは初めて知りました。 期待通りのプログラムを書いてやることもできました。 ありがとうございます。

関連するQ&A

  • Perlでの文字列処理について

    プログラム初心者です。 Perlで下記のような文字列処理のプログラムの書き方がわからず、質問させて頂きました。 【内容】 FILE_A.txtが「!」マークで区切られていて、「!」マークの下行の文字列をIPアドレスの右横に移動したものをFILE_B.txtに出力するという処理です。 「!」マークの下行の文字列の「name」は共通です。 -------------------------------------------- 【FILE_A.txt】 ! name abcdeLV 123.123.123.123 123.123.123.124 123.123.123.125 ! name fghijLV 10.10.10.11 10.10.10.12 10.10.10.13 10.10.10.15 10.10.10.16 ! -------------------------------------------- ↓ -------------------------------------------- 【FILE_B.txt】 123.123.123.123 abcdeLV 123.123.123.124 abcdeLV 123.123.123.125 abcdeLV 10.10.10.11 fghijLV 10.10.10.12 fghijLV 10.10.10.13 10.10.10.15 fghijLV 10.10.10.16 fghijLV -------------------------------------------- 上記のようなPerlでの処理を具体的に教えて頂ければうれしいです。 本サイトのようなものを利用するのが初めてですので、不手際があるかもしれませんが なにとぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 連番のファイルを何個も開きたい

    FILE *ab_1,*ab_2,*ab_3,*ab_4,*ab_5,*ab_6,*ab_7,*ab_8,*ab_9,*ab_10,*ab_11,*ab_12,*ab_13,*ab_14,*ab_15,*ab_16; ab_1=fopen("1.txt","w"); ab_2=fopen("2.txt","w"); ab_3=fopen("3.txt","w"); ab_4=fopen("4.txt","w"); ab_5=fopen("5.txt","w"); ・ ・ ・ ab_15=fopen("15.txt","w"); ab_16=fopen("16.txt","w"); という作業をfor文で回せるようにしたいのですがどうしたらいいでしょうか? 自分で作ってみたのは #include<stdio.h> main() { int i; char buf[256],file_name[256]; for(i=0;i<16;i++){ sprintf(buf,"ab_%d",i); sprintf(file_name,"%d.txt",i); FILE *buf; buf = fopen(file_name,"w"); } fprintf(ab_1,"test\n"); } とやってみたのですが、実際にfprintfで出力しようとするとファイルポインタ ab_1 が定義されていません。みたいなエラーが出てしまいます。 sprintfで取った文字をファイルポインタにしようとしてるところがいけないんだとは思うのですが何かいい方法はないでしょうか? 環境はWindowsXP,VC++6です。

  • phpで二重書込みできないプログラムを作りたい

    PHP初心者です。 テキストファイルに、ある文字列を書き込むプログラムを作ろうとしています。 ファイル内容に同じ文字列があれば書き込まず、 同じ文字列が無ければファイルに書き込むという プログラムを作りたいのですが、 うまくいきません。 どなたかアドバイスをお願いします。 <?php $name = "文字列"; $fp = @fopen("file.txt", "r"); $contents = @file_get_contents($fp); if(ereg($name, $contents)) { print "登録済みです。" ; } else { $fpa = @fopen("file.txt", "a"); fputs($fpa, "$name\n"); fclose($fpa); print "登録しました。"; } fclose($fp); ?>

    • 締切済み
    • PHP
  • 連番のファイル作成法

    以前にどこかのページで見た連番のファイル作成法ですが、うまくいきません。 $ touch 'jot -w file%03d.txt 999' touch: `jot -w file%03d.txt 999' に touch できません: 許可がありません $ sudo touch 'jot -w file%03d.txt 999' $ ls jot -w file%03d.txt 999 どのようにすれば 001.txt 002.txt ..... 999.txt の999個のファイルが出来上がるようにできますか? どうぞよろしくお願いいたします。

  • 隣りの列の文字を認識して連番を記入したい

    エクセル VBAで隣りの列の文字を認識して連番を記入するには どのようにすればよろしいでしょうか? 例えば、B列に文字や数字が適当にセルをあけて書いてあります。 この場合B列の文字や数字を認識して、文字、数字がある箇所のA列に 連番を記入するにはどのようにVBAのコードを記入すればよろしいでしょうか? (図を参照ください) 回答よろしくお願い致します。

  • 変数内の文字列を空にできない

    ファイルに文字列を改行などを加えながら格納し、条件にそってファイルから取り出し表示します。 その後ファイルの中身、取り出しと表示に使った変数を空にしたいと思って作ったwindowsプログラムの一部で下記のようにしているのですが 一回目のoutを表示すると正しく表示されるのですが それ以降,前の文字列が半端に混じって表示されます。 word.txtの中身は空になってるのを確認したのですが woかoutの中身が綺麗にクリアされていないみたいです。何故でしょうか? 解決策を教えて下さい、お願いします。 FILE *words; int a; char lo[256], wo[256], out[256]; //文字列をファイルに出力 words = fopen("word.txt" , "a") fprintf(words , lo); if(a>0) fprintf(words, "\n"); else fprintf(words , " "); fclose(words); //ファイルから指定サイズの要素を入力 words=fopen("word.txt", "r"); fread( wo, sizeof( char ), 256, words ); wsprintf(out, "%s", wo); //DrawTextへ fclose(words); //ファイルの中身を破壊 words=fopen("word.txt", "w"); fclose(words); //変数内の文字列を消す strcpy(out, ""); strcpy(wo, "")

  • A-ONEラベル屋さん連番文字列の作成

    よろしくお願いします。 A-ONEラベル屋さん連番文字列の作成がうまくできません。 掲載されている操作手順の通りに実施しました。 OKボタンをクリックして、セル?にNo.は振られているのですが、用紙に反映されず、 印刷しても印字されません。 OKした後、何か操作が必要でしょうか? ご存知の方、教えてください。 ●操作手順 はじめに連番文字を挿入開始するセルを選択します。 このとき作成する複数行セルを選択すれば、作成する数の初期値に使えます。 複数列選択時には使えません。 [リンク機能]-[連番文字の作成]メニューで[連番文字の作成]ダイアログを表示します。 [作成枚数]には選択時の行数が入っています。作成する枚数を入力してください。 [最初の番号]や[先頭文字列]/[末尾文字列]、[桁数]・[増分]を指定します。 準備ができたら[OK]ボタンをクリックします。 連番文字が作成されるセル上にある文字は置き換えられて元には戻せません。 確認ダイアログが表示されます。 確認の上[OK]ボタンをクリックします。

  • 【PHP】テキストファイル内の数字に加算する方法

    PHPでカウンターを作ってみたんですが、たまに数字が勝手にリセットされて困っています。 $aa = file_get_contents("aa.txt"); $aa = $aa + 1; $aaTX = fopen("aa.txt", "w+"); fwrite($aaTX , $aa); fclose($aaTX ); という形にしてるんですが、おそらく複数の閲覧者が同時にアクセスしたときに、fopen("aa.txt", "w+")で真っ白になってるものをfile_get_contentsで読み込んでしまい、リセットされた形になってしまうのかなと。 これ、fopenを使わず、aa.txt内の数字に直接加算させる方法とかないのでしょうか? fopenはすでに記されているものの前後に文字列を加えるというようなことはできるようですが、書かれている数字に加算したり減算したりはできませんよね? 他に直接計算することができるような命令とかありますか? せめて、このリセットが防げるような方法だけでもあれば助かるのですが…。

    • ベストアンサー
    • PHP
  • アスタリスクを文字列として変数に入れるには

    HP-UX cshで、アスタリスクを文字列として 変数に入れるにはどうしたら良いでしょうか? 現在は <file3の中身> grep -v file*.txt | grep -v file2.txt で、 set hensu=`cat file3.txt`としてecho $hensuすると grep -v file1.txt file2.txt file3.txt | grep -v file2.txt という具合に、アスタリスクがワイルドカードとして 働きます。これを「file*.txt」という文字列として 変数に入れる方法を教えてください。 宜しくお願いします。

  • 同一ファイルからの文字列検索

    お世話になります。 今、ファイル処理を勉強しています。 hoge.txtに文字列が格納されています。 (hoge.txt) --------------------- suzuki yamada kimura tanaka ito suzuki kimura --------------------- hoge.txtの上の行より、下に検索を行い、 一致した場合、printf("HIT\n");と出力します。 動きは、 suzukiを検索文字列し、yamada~kimuraまで検索を行い、 もしヒットした場合、出力表示します。 suzukiが検索終了すると、次のyamadaを検索文字列として、 kimura~kimuraを検索します。 この動作を最後の行まで行えば終了です。 下記のfgets()で1行分を取得してからの 次の行への移行がわかりません。 FILE *fp; char name[256]; if( (fp =fopen( "hoge.txt", "r )) == NULL ){ return 0; } while( fgets(name, sizeof(name), fp ) != NULL ){ //ここで次の行以下とstrstr()で比較を行う } お手数をお掛けしますが、よろしくお願い致します。

専門家に質問してみよう