No.7ベストアンサー
- 回答日時:
# 横槍ぎみに失礼します。
strtok() でいけますよね。
第2引数にデリミタを列挙すれば良いわけですし。
たとえば、↓こんな感じ↓
----------------------------------------
char src[] = "This is a pen, and that is a pencil: Great";
char *dest;
dest = strtok( src, " ,:" );
while ( dest != NULL )
{
puts( dest );
dest = strtok( NULL, " ,:" );
}
----------------------------------------
【結果】
This
is
a
pen
and
that
is
a
pencil
Great
No.5
- 回答日時:
自分で一文字ずつ見るコード書かなくても strtok で一発では?
参考URLにサンプルもあります。
参考URL:http://www9.plala.or.jp/sgwr-t/lib/strtok.html
No.4
- 回答日時:
英文の表記ルールだと、カンマの後には空白一つ、ピリオドの後には空白二つを置くというのが
あるはずですが、その辺の扱いはどうなりますか?
たとえば hello, world と入力した場合の結果は
hello
(空行)
world
のようになってもOKですか?
それと、ダブルクォートやシングルクォートで囲まれているのは
空白を含んでいても一つの語として見なさなくても良いのでしょうか?
No.3
- 回答日時:
区切り文字(デリミタ)が複数なんですね、
ただ単に表示するだけなら、
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 256
int main(void) {
char buf[MAX_LENGTH];
int i;
/* bufには既に文字列が入力済みとします */
len = strlen(buf); /* 文字列の長さを取得 */
if (len > MAX_LENGTH) { /* バッファサイズ以上のときエラー */
fprintf(stderr, "エラー:文字列が長すぎます\n");
return 1;
}
/* 文字列長だけループ */
for (i=0; i<len; i++) {
/* 文字列の空白、コンマ、コロンを改行に置換 */
if (buf[i]==' ' || buf[i]==',' || buf[i]==':') buf[i]='\n';
}
/* 文字列を表示 */
printf("%s\n", buf);
return 0;
}
でどうでしょう?(^^
No.2
- 回答日時:
愚直に書くと
char* str = "This is a book";
int i;
/* strlenにstring.hのincludeが必要 */
/* 1文字ずつ処理 */
for(i = 0; i < strlen(str); i++){
char ch = str[i];
/* 改行をする場合を判定 */
if(ch == ' ' || ch == ',' || ch == ','){
putchar('\n');
}
else{
putchar(ch);
}
}
のような感じではないでしょうか。
「ある引数の文字が、別の引数の文字列の中のいずれかに当てはまる場合場合」という判定を行う関数があったような気もしますが、失念してしまいました。
参考までにどうぞ。
No.1
- 回答日時:
★アルゴリズム
・文字列を左から検査して、スペース、カンマ、コロンの文字の時だけ
改行コード(\n)を出力すればよい。
・スペース、カンマ、コロン以外の文字は普通に putchar で出力します。
●サンプル
void MyPrint( const char *string ) ←入力した文字列を指定
{
while ( *string != '\0' ){
if ( strchr(" ,:",*string) != NULL ){
putchar( '\n' );
}
else{
putchar( *string );
}
string++;
}
}
・以上。おわり。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ある文字列で2回目3回目に出現...
-
itoaわかりません
-
sscanfとscanfの違いがよくわか...
-
文字の入れ替えについて
-
メニューバーでクリックした個...
-
charと%c , %s の関係について
-
単語数のカウントについて
-
VBで全角文字の上位コードを...
-
C言語のステップ数をカウントす...
-
CStringのFindで文字列検索を行...
-
大学のプログラミング課題について
-
putsとputcharの違い?
-
エディットボックスに入力され...
-
反転した数値を表示させるやり方
-
getchar分を用いて入力された文...
-
2÷3などの余りについて
-
複数桁10進数の*桁目だけを抽出...
-
マイナスからプラスへ転じた時...
-
10個出力で改行したいのですが...
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
C言語 空白の行(改行のみ)が...
-
C言語のステップ数をカウントす...
-
C言語で16進数文字列から16進数...
-
itoaわかりません
-
fgetsで拾われる改行文字を削除...
-
fgets関数を使用したときの文字...
-
文字列中に含まれる文字の個数...
-
charと%c , %s の関係について
-
Cで「大文字、小文字の判定」は...
-
反転した数値を表示させるやり方
-
fgetsとsscanfを使って一行から...
-
エディットボックスに入力され...
-
小文字のみを数える方法
-
スペースで区切って数字を入力
-
CStringについて
-
C言語、単語ごとに改行したい
-
C言語 strlen 再入力を促す
-
教えていただけませんか?C言語...
おすすめ情報