• ベストアンサー

困ってます!書き方がわかりません。

inputに名前を入れて、outputにそれを出すというシンプルなものですが、書き方がわかりません。名前をlast, first middleと入れて出力時に、first middle lastと出したいんです。この時最初に付いていたlastの後ろのコンマ","を消したいんです。参考書を片手にやっているんですが、どうもうまく動きません。どなたか教えてくださいよろしくお願いします。 

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

他にもやり方はあるだろうけど、概ね、こんな感じ、もうちと、エラーチェックが必要だと思うけど。 #include <stdio.h> #include <string.h> #define BUFFSIZE 80 void main(void){ char name[BUFFSIZE]; char lastName[BUFFSIZE]; char firstName[BUFFSIZE]; char middleName[BUFFSIZE]; char *p; printf("input name (ex. last, first middle):"); fgets(name, BUFFSIZE, stdin); sscanf(name,"%s %s %s\n",lastName,firstName,middleName); p=strchr(lastName,','); /* カンマの検索 */ if(p!=NULL)*p='\0'; if(*middleName=='\0') printf("name:%s %s\n",firstName,lastName); else printf("name:%s %s %s\n",firstName,middleName,lastName); }

DIY1
質問者

お礼

すばやいご返答ありがとうございます!とてもためになりました。これを参考に勉強させていただきます!

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

関連するQ&A

  • ファースト、ラストネームのカンマの意味

    ファーストネーム、ミドルネーム、ラストネームとあって、それら名前の間にカンマが入っている方がいますが それはどういう意味なのですか? 一説によると、ラストネームを先に書く場合ラストネームの後ろにカンマをつける 一説によると、カンマをつけると別の人物を指すことになる 本当のカンマの意味はなんでしょうか。お願いします。

  • 海外出産でのミドルネームの選び方

    アメリカで出産予定の者です。 子供がアメリカ国籍を取得できるので、【アメリカ用の出生届】の際にはミドルネームを付けようと考えているのですが、ミドルネームにどんなものが使えるかなどがよく分かりません。 (例)花子 ●● 山田 といった具合に、ファースト、ラストネームは日本名です。 どなたか同じようなご経験の方、ミドルネームを選ぶ際に何か参考にできるサイトや、代表的な名前一覧などありましたら教えて下さい。 以前聞いた話ですと、ミドルネームには名前に意味がついていたりするそうです。各ミドルネームの由来なども分かればありがたいです。 宜しくお願いいたします。

  • input値をボタンでoutput表示する方法

    質問の内容が分かりにくかったので再質問させていただくことにしました。 現在公開しているホームページで、うまく作動しない箇所が見つかり対応に苦慮しています。 問題点を分かりやすくするために、inputした値をGoボタンでoutputに出力表示する簡単なサンプルに落とし込んでみました。 output1はfunction go()内、output2はfunction go()外での出力表示です。 output2の要件として、htmlが開かれた時にはinputの初期値を、Goボタンでinputを更新した時はその値を表示したいのですが、初期値のまま更新できません。 参考チェック用のoutput1には正しく表示されます。 解決方法を教えていただけると助かります。 <html> <head> <title>input-output</title> </head> <body> <p> <label for="input">input</label> <input type="number" id="input" value="100"> </p> <p> <input type="button" onclick="go();" value="Go"> </p> <p> <label for="output1">output1</label> <input type="text" id="output1"> </p> <p> <label for="output2">output2</label> <input type="text" id="output2"> </p> <script> var input; go(); function go() { input= document.getElementById("input").value; var output = document.getElementById("output1"); output.value = input; } var output = document.getElementById("output2"); output.value = input; </script> </body> </html>

  • C言語のアルゴリズム、マージソートについて質問です。

    C言語のアルゴリズム、マージソートについて質問です。 例えば下のプログラム #include <stdio.h> void merge(int first, int last, int *data, int *work); int main(void) { int data[9] = {1,8,3,6,5,4,7,2}; int work[9]; int i; merge(0,8,data,work); for(i = 0;i < 9;i++) printf("%d",data[i]); return 0; } void merge(int first, int last, int *data, int *work) { int middle, mae, ato, i; if (first == last) { return; } middle = (first + last) / 2; merge(first, middle, data, work); merge(middle + 1, last, data, work); i = first; mae = first; ato = middle + 1; while (mae <= middle && ato <= last) { if (data[mae] <= data[ato]) { work[i] = data[mae]; i++; mae++; } else { work[i] = data[ato]; i++; ato++; } } while (mae <= middle) { work[i] = data[mae]; i++; mae++; } while (ato <= last) { work[i] = data[ato]; i++; ato++; } for (i = first; i <= last; i++) { data[i] = work[i]; } } まずfirst=0,last=8でmerge関数に入り関数内8行目でmiddle=4となり、 10行目でfirst=0,last=4でmergeに入り同じく8行目でmiddle=2となり、 同じく10行目でfirst=0,last=2でmergeに入り同じく8行目でmiddle=1となり、 同じく10行目でfirst=0,last=1でmergeに入り同じく8行目でmiddle=0となり、 同じく10行目でfirst=0,last=0でmergeに入り3行目のifでreturnします。 そして前回のfirst=0,last=1,middle=0のmerge10行目に戻り, 12行目でfirst=1,last=1でmergeに入り3行目のifでreturnし、 12行目以下の作業をします。 そのまま一番下までいったあとはどうなるのでしょうか? また上で書いた手順もあっている自信はあまりないので ご指摘お願いします。

  • 長い名前の例を示して下さい

    人の名前で、なるべく長い名前の例を知りたいです。 長い名前の例を教えて下さい。 但し、パブロ・ピカソのフルネームのように、やたらにミドルネームが多い名前ではなく、 ファーストネームまたはラストネーム自体が長い名前を教えて下さい。

  • 外人の名前で使われる『=』

    外人の名前は ファーストネーム=ミドルネーム=ラストネーム と言う表記をしますが、  ここに使われる『=』って、どういう意味があるのでしょう。  また、代わりに『・』を使ってもいいのでしょうか?  そもそも『=』を使う事に特に意味はないのでしょうか。  よろしくお願いします。

  • C言語でscanfを用いた入力

    C言語でscanfの動作を確かめる為に、次のプログラムを作成して実行してみました。 #include <stdio.h> int main(void){ int i; printf("Input1:"); scanf("%d",&i); printf("Input2:"); scanf("%d",&i); printf("Output:%d",i); return 0; } このプログラムは1回目と2回目に数値を入力すると正常に出力します。 例 1回目の入力に10、2回目の入力に20を入力した時の出力結果 Input1:10 Input2:20 Output:20 今度は1回目で数値、2回目で文字を入力してみました。 そしたら2回目の入力が無視されました。 例 1回目の入力に10、2回目の入力にAを入力した時の出力結果 Input1:10 Input2:A Output:10 今度は1回目で文字を入力してみました。 そしたら2回目の入力は要求せず、いきなりよく分からない数値が出力されました。 例 1回目でAを入力した時の出力結果 Input1:A Input2:Output:-858993460 どうして文字を入力したら正常に出力しなくなるのでしょうか?

  • Ajaxに関する質問です。

    Ajaxに関する質問です。 SAStruts + JSP + jQueryで勉強しています。 JSPファイル、及びそれに対応するアクションクラスに対して下記の様に記述する事で、 ボタン押下によりajaxが実行され、指定したタグ要素のボディ部に出力値を受け取る事を確認しました。 ●index.jsp <span id="output">ボディ部</span> <input type="button" value="press me!" onclick="$('#output').load('output');"/> ●indexAction.java @Execute(validator = false) public String output() { ResponseUtil.write("出力値"); return null; } 今回、指定したタグ要素の特定の属性に値を受け取る方法を知りたいです。 具体的には上記の実装ですと、 実行前:<span id="output"></span> 実行後:<span id="output">出力値</span> の様になると思うのですが(イメージ)、 これを<span>では無く、<input>を使い、 inputタグのvalue属性に出力値を受け取り、 実行前:<input type="text" id="output" value=""/> 実行後:<input type="text" id="output" value="出力値"/> としたり、name属性に出力値を受け取り、 実行前:<input type="text" id="output" name="default"/> 実行後:<input type="text" id="output" name="出力値"/> としたり、同時に複数の属性に出力値を受け取り、 実行前:<input type="text" id="output" name="default" class="default"/> 実行後:<input type="text" id="output" name="出力値" class="出力値"/> としたりといった様な事を実現する為の実装方法があれば、例示していただけると助かります。 宜しくお願いします。

  • 学習のアウトプットとインプット

    学習のアウトプットとインプットで別の参考書を使う必要があるのでしょうか。僕はひとつの参考書を完璧にしていく派なのですが、そうしない方がいいときもあるみたいです。。。。 たとえば、英熟語は駿台のシステム英熟語というものを使っていますが、これはインプットには向いていますが、アウトプットには向いていないので、ほかのを使うべきだそうです。結われてみれば確かにそのほうがいいのかもしれませんが、時間もまたかかります。 今まで、アウトプットとインプットについてはあまり意識したことなかったので、どなたか教えてください。それぞれ参考書を分けるべきでしょうか。また、科目にもよるのでしょうか。

  • BTLアンプ用の正相/逆相の取り出し方について教えてください

    BTLアンプ用の正相/逆相の取り出し方について教えてください。 個人で使用する10W程度のBTLパワーアンプですので、 厳密(厳格)な比較ではなくて、簡単な説明でかまいませんので教えてください。 OPアンプを使用する例としてWebサイト上で下記の「例1」を多く見かけますが、 「例2」や「例3」では何らかの不都合(欠陥)があるのでしょうか。 例1:ボルテージフォロアに続けて反転回路を置く。 non-invert出力はボルテージフォロアOUTPUT(+)から得る。 invert出力は反転回路OUTPUT(-)から得る。 INPUT-----ボルテージフォロアOUTPUT(+)-----反転回路OUTPUT(-) 例2:ボルテージフォロアと反転回路は別にする。 INPUTの後でボルテージフォロアと反転回路を分ける。 INPUT-----ボルテージフォロアOUTPUT(+) |---------反転回路OUTPUT(-) 例3:反転回路だけとする。(ボルテージフォロアは置かない) INPUTをそのままnon-invert出力として使う。 INPUT-----OUTPUT(+) |---------反転回路OUTPUT(-) ----- 文字列だけでの図示が上手にできていませんので、言葉で補足したつもりですが、うまく表現できていない気もします。 足りない部分については指摘してください。 よろしくお願いします。