性格いい人が優勝

#include <stdio.h>
#include <string.h>

void main(void){
char str[] = "str == NULL ? \"(NULL)\" : str";
char *p;
p = strtok(str, "?:");
while(p) {
printf("|%s|\n", p);
p = strtok(NULL, "?:");
}
}
以上のプログラムをもっと簡単に長くなってもいいので書き換えられないでしょうか?
またこのプログラムは何をするプログラムですか?

A 回答 (3件)

#include <stdio.h>


#include <string.h>

int main(void){
char str[] = "str == NULL ? \"(NULL)\" : str";
char *p, *q;
int ch;
p = str;
for(;;){
for(q=p; !(*q=='?' || *q==':' || *q==0); q++) ;
ch = *q;
*q = 0;
printf("|%s|\n", p);
if(ch==0) break;
p = q+1;
}
}
ですかね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
あのプログラムの動きを一つ一つ詳しく教えていただけないでしょうか?
for(;;)やfor(q=〜++)++などよくわかりません。

お礼日時:2021/01/31 19:19

> for(;;)やfor(q=〜++)++などよくわかりません。



for文の説明くらいは、入門書で勉強しましょう。
また、++ ごときを知らないではCプログラムは読めません。
まずは、C入門を終えましょう。
    • good
    • 3

まずstrtok関数についてよく理解してください。


下記URLが参考になるかと。
https://bituse.info/c_func/18
http://www9.plala.or.jp/sgwr-t/lib/strtok.html
http://www.c-tipsref.com/reference/string/strtok …
    • good
    • 1

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