• ベストアンサー

fprintfを教えて下さいm(_ _)m

fprintfの使い方は分かるんですが。。。 テキストに書き込みたい内容が 1 4 6 3 12 でしたら %d を使えばいいですが a: 1 b: 4 c: 6 d: 3 e:12 のように文字と数字を書き込むにはどうしたらいいでしょうか?実際に書くと。。。 fprintf( fp, "a: %d", val)といった形では数字しか出来ませんし fprintf( fp, "%c: 1", moji) といった形では文字しか出来ません。 理想はこの上の関数をドッキングした形です。 ご協力お願いしますm(_ _)m

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

fprintfの書式は int fprintf(FILE *stream, const char *format, ...); となっています 引数の ... は個数の決まっていない可変引数の意味で0個以上何個でも大丈夫です。 sprintfやprintfも同様です。 fprintf( fp, "%c: %d", moji, val);

noname#45110
質問者

お礼

php504 様 >>>>> ありがとうございますm(_ _)m もう一回教科書を見直してみます

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

素直に、 fprintf(fp, "%c:%d %c:%d %c:%d %c:%d ", moji1, val1, moji2, val2, moji3, val3, moji4, val4); みたいにすればいいと思います。mojinが文字列なら%cではなく、%sにしてくださいね。

noname#45110
質問者

お礼

lv4u 様 >>>>>>> %c・・・・・やってしまいました・・orz ""内が複数でもいいんですねありがとうございますm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • fprintfで微小な数値を書き込む場合??

    fprintf( fp, "%10.20f, %2.20f, %2.20f\n", b,c,d); としてb,c,dの値を書きこもうとしました。 しかし、c,dの値が小さくて0になってしまいました。 どのように改善すればいいのですか?分かる方がいたら教えていただけないでしょうか? よろしくお願いします。 ちなみにc,dの値は0.000000023などです。

  • 文字列操作(終端と抽出)について

    こんばんは お時間等ございましたら、ご指摘よろしくお願いします。 <背景>メインプログラムからサブプログラムに複数の数値を渡して、     文字列として編集します。     そして、その文字列から特定の文字のみを抽出し、     ファイルに出力したいと考えています。     ※下記にソースイメージを記しました。      ただ、While文の指定がうまくなく、      想定どおり処理を抜けれません。 <質問>サブプログラムでファイルに出力する文字のうち、     抽出する文字と抽出しない文字はランダムで、     メインプログラムから、渡されてきます。     ※文字列の文字数は、     メインから渡され編集した文字数>=ファイルに出力する文字数。     サブプログラムの先頭で出力する文字列の大きさを     指定しているのですが、抽出しない文字があった場合、     抽出しない文字数分ゴミが出力されてしまうのを     防ぎたいと考えています。 <イメージ> #include <stdio.h> void sub( int a, int b, int c, FILE *fp ); int main(){ FILE *fp; fp = fopen("c:\\0511.txt","w"); int a;int b;int c; a = 1; b = 0; c = 1; sub( a, b, c, fp ); fclose(fp); } void sub( int a, int b, int c, FILE *fp ){ int j = 0; char moji[4];char moji2[4]; sprintf(moji,"%d%d%d%s",a,b,c,"\0" ); while( moji[moji[*moji]] != '\0' ){ switch( moji[moji[*moji]] ){ case '1' : moji2[j] = moji[moji[*moji]]; break; case '0' : j -= 1; break; default :;break; } moji[*moji] += 1;j += 1; } fprintf(fp,"%s\n",moji2 ); }// Run-Time Check Failure #2 - Stack around the variable 'moji' was corrupted. もし宜しければ、ご指摘の程よろしくお願いします。

  • fprintfで出力するファイルのパス指定について

    cで以下のコードを書いています。 file.txtを任意の場所に作りたいのですが どうすればいいのでしょうか。 fopen("c:\file.txt", "r"))と書くとエラーになって しまいました。 void main(void) { FILE *fp; if ((fp = fopen("file.txt", "r")) == NULL) { fprintf ( stderr, "err\n" ); exit (2); } fprintf(fp,"%s\n",a);; fclose(fp); }

  • printfだと出力されるのにfprintfだと出力されないのはなぜですか?

    今プログラムを作りかけなのですが、 forで何回もまわして計算しているので printfでそのまま出力すると見づらくなってきたので テキストに出力したくてちょっといじってみたんですが、テキストは作成されるんですが肝心の数字が出力されていません。 ソースのいじったところは pritf("s[%d]=%f\n",a,b); となっていたところを メイン分の最初で FILE *fp; を宣言して fp=fopen("test.txt","w"); 省略 fpritf(fp,"s[%d]=%f\n",a,b); と直しただけなのですが test.txtに何も書き込まれません。 ソースを省略しすぎかもしれませんが よろしくおねがいします。

  • 'const char *' 型は 'char *' 型に変換できない ??

    Case 1 Text9.Text = "AB"; Text10.Text = "A"; // 1文字目 Text11.Text = "B"; // 2文字目 case 2; Text9.Text = "Ab"; Text10.Text = "A"; Text11.Text = "b"; case 3; Text9.Text = "aB"; Text10.Text = "a"; Text11.Text = "B"; case 4; Text9.Text = "ab"; Text10.Text = "a"; Text11.Text = "b"; 上記のようなCase 文を C を使って作成したいのですが, A~J の大文字とa~jまでの小文字をつかって,2文字の文字列をつくるとき, 1文字目と2文字目が,形態も名称も異なる文字列(例 AB , Ab aB, ab, AC, Ac aC ac, ...)のcase文をつくりたいのですが, 'const char *' 型は 'char *' 型に変換できないというエラーメッセージがでてしまいます.下記プログラムをどう直せばいいかおしえてください. #include <stdio.h> #define MAX_NAME 256 int main(void) { const char *NAME12 = "Text9"; const char *NAME1 = "Text10"; const char *NAME2 = "Text11"; const char *ALPH = "ABCDEFGHIJabcdefghij"; FILE *fp = NULL; char f_name[MAX_NAME]; int count = 0; char *p = ALPH; char *q = ALPH; printf("ファイル名:"); scanf("%s", f_name); fp = fopen(f_name, "w"); if (fp == NULL) { printf("'%s':ファイルが見つかりません\n", f_name); } else { for (p = ALPH; *p != '\0'; p++) { for (q = ALPH; *q != '\0'; q++) { if (*p != *q) { count++; fprintf(fp, "Case %d\n", count); fprintf(fp, "%s.Text = \"%c%c\"\n", NAME12, *p, *q); fprintf(fp, "%s.Text = \"%c%c\"\n", NAME1, *p, *q); fprintf(fp, "%s.Text = \"%c%c\"\n", NAME2, *p, *q); } } } fclose(fp); } return 0; }

  • ファイルへの書き込み

    ループ内で、10進数数字(文字コード)をchar型変数に入れ、指定文字アペンド(a)を使用して文字をファイル(.txt)に出力したいのですが、うまくできません。fputc関数で作成したファイルをみると、必ず最後の文字が先頭に記述されます。 例)(※文字コードは手持ちの開発環境でのもの) 「65」「66」「83」の順に「MOJI」に入れると「printf」で標準出力されるのは「A」「B」「S」の順なのですが、ファイルにはなぜか「SAB」の順になっています。 以下プログラムで行いました。(必要不可欠なものでも決まり文句等を含め、一部省略しています) ~略 FILE *fp; char MOJI; int SUUJI; while(・・・) { ~略~ MOJI = SUUJI; printf("%c\n",MOJI); fp = fopen("・・・.txt","a"); fputc(MOJI,fp); } ~以下略 元々このような機能なのでしょうか。 原因と解決方法を教えていただければと思います。 よろしくお願いします。

  • vb6でテキスト入力の数字を判定したい。

    お世話になります。 XPでvb6を使ってプログラムを作っています。 テキスト形式で入力された文字が数字の0から15までの数字かを判断したいのですが IsNumeric関数で数字か数字以外の文字かを判定した後、 VAL関数で判定とプログラミングしたところ 入力された値が”1d1”だと IsNumeric関数はTrue、VAL関数は10になり 正しい入力と判断されてしまします。 何かいい方法があればご教授頂きたく宜しくお願いします。 以上です。

  • 複数テキストファイルを読み込み、複数テキストファイルの出力

    質問は100個のテキストファイル(それぞれ10個のデータを含む)を読み込み、それぞれのテキストファイルから5個ずつデータを抽出し、200個のテキストファイルとして出力するというプログラムについての質問です。 以下が僕の作ったファイル出力部分のプログラムです。 /************/ void ecg_rr(fp,data_max) FILE *fp; { int b,i=0; int c=1; char fname[64]; data[0][i]=trend_data[0][i]; for(i=0;i<100;i++) sprintf(fname,"ss[%d].txt",1+i); fp = fopen(fname,"w"); fprintf(fp,"%4d\n",c); fprintf(fp,"%8.8f\n",data[0][0]); fprintf(fp,"%8.8f\n",data[0][2]); fprintf(fp,"%8.8f\n",data[0][4]); fprintf(fp,"%8.8f\n",data[0][6]); fclose(fp); sprintf(fname,"sk[%d].txt",1+i); fp = fopen(fname,"w"); fprintf(fp,"%4d\n",c); fprintf(fp,"%8.8f\n",data[0][1]); fprintf(fp,"%8.8f\n",data[0][3]); fprintf(fp,"%8.8f\n",data[0][5]); fprintf(fp,"%8.8f\n",data[0][9]); fclose(fp); } 複数ファイルの読み込み方がわからず、自分のプログラムだと1つのテキストファイルしか読み込めないので、16_4.batを作り、その中身を 16_4 読み込むテキストファイル名1.txt ss[1] 16_4 読み込むテキストファイル名1.txt sk[1] 16_4 読み込むテキストファイル名2.txt ss[2] 16_4 読み込むテキストファイル名2.txt sk[2] ・・・ とやったのですが、うまくいきませんでした。 どうすればよいのでしょうか。

  • ファイルでっっっっ!!

    またまた質問ですm(_ _)m ファイルに関する質問なんですが。。。。 テキスト内 ---------------------------- a: 546 b: 5343 c: 5 d: 345 e: 3e4r ---------------------------- のような内容のとき文字のみを抽出してresult.txt に保存する方法と 数字のみ抽出して result2.txt に保存する方法を教えてください. fprintf を使えば良いのでしょうか? 初心者でやっとファイルの書き込みがわかってきたところです。 ご協力お願いしますm(_ _)m

  • C#で文字列を数値に変換する方法

    Visual Stdio .NET 2003を使っています。 C#で文字列(数字)を数値に変換したいのですが、 VBでいうVal関数のような物はありますか?例えば、 double a; a = Val("3.14"); とすると、aに3.14が入るような関数を使いたいです。 検索したのですが、見つかりませんでした。宜しくお願いします。

このQ&Aのポイント
  • ブラザー製品のMFC-L2750DWでコントロールセンター4のプリンター指定が変更できない問題について相談したいです。
  • 最近、7460DNから2750に買い換えたところ、コントロールセンター4のプリンター指定ができず、使用できない状態です。
  • 環境はWindows10で接続はUSBケーブルですが、エラーが発生し、プリンターを選択できません。
回答を見る