
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で質問しましょう!
似たような質問が見つかりました
- 英語 英単語を探してます! 英単語の頭文字を取っても成立する、英単語の頭文字を変えても成立する英単語を教え 24 2022/05/25 01:29
- 英語 Aから始まる単語で、頭文字のAを抜いて成り立つ英単語を教えてください(´;ω;`) 例 Lace→a 32 2022/09/17 11:36
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- 英語 瞬時に英語を組み立てたり理解するにはどうしたらいいでしょうか 3 2022/04/23 13:34
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- 大学受験 明治大学受験、もう一冊、英単語張をやるか? 4 2022/10/23 20:50
- 英語 ダイパリメイクを英語でしているのですが… 1 2022/10/28 03:18
- 大学受験 高三 進研模試偏差値34でした。 9月模試で英語と国語が30代前半でした。 英語のレベルは英検4級で 1 2022/10/08 14:32
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsで拾われる改行文字を削除...
-
fgets関数を使用したときの文字...
-
CStringのFindで文字列検索を行...
-
1行の文字列を時間差で表示する...
-
sscanfとscanfの違いがよくわか...
-
小文字のみを数える方法
-
反転した数値を表示させるやり方
-
メニューバーでクリックした個...
-
C++
-
C言語で16進数文字列から16進数...
-
文字列の途中に「0」がある場...
-
C言語 空白の行(改行のみ)が...
-
C言語で、文字の出現頻度を求め...
-
文の意味
-
16進数の文字列
-
教えていただけませんか?C言語...
-
Enterキーを押されたら次の処理...
-
「指定されたキャストは有効で...
-
「Aに対するBの割合」と「Aに対...
-
複数桁10進数の*桁目だけを抽出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
fgetsで拾われる改行文字を削除...
-
sscanfとscanfの違いがよくわか...
-
反転した数値を表示させるやり方
-
charと%c , %s の関係について
-
fgets関数を使用したときの文字...
-
Cで「大文字、小文字の判定」は...
-
strstrを利用しない文字列検索...
-
文字列中に含まれる文字の個数...
-
C言語のステップ数をカウントす...
-
itoaわかりません
-
C++
-
C/C++言語で日本語処理
-
C言語 空白の行(改行のみ)が...
-
CStringについて
-
小文字のみを数える方法
-
教えていただけませんか?C言語...
-
ブランクのチェック
-
str[j++]の意味
-
初歩的なプログラムなんですが...
おすすめ情報