入力された文字列(スペース含む)の頭文字をとるプログラムを書きたいです。
例として、
「Tarou Tanaka」→「TT」
「as soon as possible」→「asap」
という感じです。
やり方がさっぱりわかりません。もしよろしければご回答よろしくお願いします。
追記:まだポインタを習っていないので、できればそれを用いない方法を教えていただけるとうれしいです。。
strtokを使う方法は、区切った後に最初の文字だけを取る方法がわからず挫折してしまいました。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
c
1#include <stdio.h> 2 3// 「出力準備完了」「スペースが現れるまで待ち」の2状態を定義 4typedef enum { READY, WAITING } State; 5 6int main(void) 7{ 8 int ch; 9 State s = READY; 10 11 // EOFもしくは改行が来るまで1文字ずつ読み取り続ける 12 while ((ch = getchar()) != EOF && ch != '\n') { 13 if (ch == ' ') { 14 // スペースなら準備完了状態にして次に備える 15 s = READY; 16 // 出力は何もしない 17 } else if (s == READY) { 18 // 準備完了状態でかつスペース以外であれば文字を出力 19 putchar(ch); 20 // 待ち状態に移行 21 s = WAITING; 22 } 23 } 24 25 putchar('\n'); 26 return 0; 27}
投稿2016/10/20 11:52
編集2016/10/20 11:53総合スコア5223
0
ベストアンサー
他の回答のようにstrokを使うのも手ですが、学習段階であるなら仕組みを理解するためにも自力で書いた方が良いでしょう。
ということで一例。
c
1#include <stdio.h> 2int main(void){ 3 char s[] = "as soon as possible"; 4 int i; 5 char pre = ' '; 6 for(i = 0; s[i] != 0x00; i++){ 7 if(pre == ' ' && s[i] != ' '){ 8 printf("%c", s[i]); 9 } 10 pre = s[i]; 11 } 12 printf("\n"); 13} 14
投稿2016/10/20 23:38
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
strtok()を使用して
ここを参考にされるとどうでしょうか?
http://www9.plala.or.jp/sgwr-t/lib/strtok.html
投稿2016/10/20 11:42
総合スコア1689
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
C
1 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5 6static void print_initialsString(char* input_str) 7{ 8 char sepaleter[] = " "; 9 10 char* tok = strtok( input_str, sepaleter ); 11 while( tok != NULL ){ 12 printf( "%c", tok[0] ); 13 tok = strtok( NULL, sepaleter ); 14 } 15 printf("\n"); 16} 17 18int main(int argc, char* argv[]) 19{ 20 print_initialsString(argv[1]); 21 return 0; 22}
strok()をつかう例を作ってみました。実行時は、コマンドライン引数で対象となる文字列を渡してください。
投稿2016/10/20 16:29
総合スコア19
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/20 11:54