プロが教える店舗&オフィスのセキュリティ対策術

C言語について質問です。
以下のような結果を出すためにはどのようなコードが良いですか?サンプルコードを頂きたいです。よろしくお願いします。


文字列を入力せよ:hello,apple,man
分割文字を入力せよ:,
hello
apple
man

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

  • こんな感じなのですが、strtokについて調べてもこのようにコード内で決めた文字でしか区切ることができません。実際にやりたいのは最初に打った文字列の中のうちどれか任意の文字を実行中に選択してそれにより、区切りたいのです。実行例ではカンマを選択してますが、英文字でも区切れるようにしたいです。

    helloxapplexman
    から
    xを選び、
    hello
    apple
    man
    といった具合です。

    「C言語について質問です。 以下のような結」の補足画像1
      補足日時:2022/11/01 18:02

A 回答 (3件)

strtokを行うとき、第2パラメータは、入力した区切り文字列を指定すれば良いです。


下記へアップしました。
https://ideone.com/BLK8Cn
    • good
    • 0
この回答へのお礼

ありがとうございますm(_ _)m スッキリしました!

お礼日時:2022/11/01 21:21

strtok の引数は文字列リテラルに限定されているわけじゃない. そのプログラムだって, 例えば



#include <stdio.h>
#include <strign.h>

int main(void)
{
char str[99]; // なんで 99 なんだろう
char delim[] = ",";
printf(Input String: ");
scanf("%99s", str);
printf("%s\n", str);

char *ptr = strtok(str, delim);
printf("%s\n", ptr);

while (ptr != NULL) {
ptr = strtok(NULL, delim);
if (ptr != NULL) {
printf("%s\n", ptr);
}
} // もう少しきれいにかけるんじゃないかなぁ
}

って書いてもいいんだし.
    • good
    • 0

どこまでできていて、どこが分からないか書いていないので回答しようがありません。


標準入力を「,」でstrtok()して、順番にsdtdoutにfprintf()するだけだと思うんですが。
簡単な問題過ぎてどこで詰まっているのかよく分りません。
    • good
    • 2

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