プロが教えるわが家の防犯対策術!

char a[]="thank you for coming. see you";
で初期化し、スペースやピリオドを出力せず1行に1単語ずつ//で囲んで出力する方法がなかなかできません。

質問者からの補足コメント

  • ちなみにc言語です

      補足日時:2018/05/28 19:40
  • しかし、1単語ごとに//で囲む方法がよくわかりません

      補足日時:2018/05/28 19:52
  • 文字列として出力したいのですが、
    printf("/%s/",a[i]);みたいにすることはできますか?

      補足日時:2018/05/28 20:15

A 回答 (3件)

>printf("/%s/",a[i]);みたいにすることはできますか?



https://bituse.info/c_func/18
>今回はC言語のstrtok関数について説明します。
 区切りたい文字、今回はスペースを指定することで文字の並びをトークン分解して文字列として取り出せ出ます。
 なれないと文字列の操作は難易度が高めと思います。
 これも勉強と一環で試してみるのも良いでしょう。


//トークンがNULLになるまでループ
while(p!=NULL){
//2回目以降は第一引数はNULL
p = strtok(NULL,".");
if(p!=NULL){
puts(p);
}
}

 このコードでは、「puts(p);」で単語を出力しますが、この前後の部分に//を表示するコードを追加すれば希望通りになると思われます。
    • good
    • 0
この回答へのお礼

何回も質問してしまってすいませんw
ありがとうございました^^

お礼日時:2018/05/28 20:36

>しかし、1単語ごとに//で囲む方法がよくわかりません


 単語を//で囲んで表示したいわけですね。

例:
//thank//you//for//coming//see//you

>【C言語入門】文字・文字列(char)の使い方
https://www.sejuku.net/blog/25592

 このサンプルページで中程にあるC言語のソースコードで。


// 1文字ずつ表示
for(int i = 0; i < sizeof(str1); i++) {
printf("%d番目の文字は%c\n", i + 1, str1[i]);
}

 ここで文字配列から一文字ずつ抽出しています。
 これをベースに考えますが、スペースやピリオドは除外したいわけですからここにif文を追加して条件判断を行います。

 このサンプルで言えばstr1配列のi番目の文字がスペースまたはピリオドであれば//を出力する・・・を加えると良いでしょう。
    • good
    • 1

文字配列 a を0から順番に一文字ずつを取り出していき、スペースやピリオドが出現したら改行の¥nを出力する・・・を文字配列の終端まで繰り返す・・・などでしょうか。

    • good
    • 1

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