いちばん失敗した人決定戦

#pragma warning(disable: 4996)
#include <stdio.h>// puts, printf
#include <string.h>// strcpy, strtok


int main()
{
const char* str = "abc:123\n,tdef:45,ghi:678.";
char buf[1024], * p;

strcpy(buf, str);
puts("-- \"\\n\"--");
p = strtok(buf, "\n");
while (p) { printf("[%s]\n", p); p = strtok(NULL, "\n"); }

strcpy(buf, str);
puts("-- \"\t\"--");
p = strtok(buf, "\t");
while (p) { printf("[%s]\n", p); p = strtok(NULL, "\t"); }

strcpy(buf, str);
puts("-- \",\"--");
p = strtok(buf, ",");
while (p) { printf("[%s]\n", p); p = strtok(NULL, ","); }

strcpy(buf, str);
puts("-- \",\\t\\n\"--");
p = strtok(buf, ",\t\n");
while (p) { printf("[%s]\n", p); p = strtok(NULL, ",."); }
}
に関して、
strcpy(buf, str);
puts("-- \"\\n\"--");
p = strtok(buf, "\n");
while (p) { printf("[%s]\n", p); p = strtok(NULL, "\n"); }

strcpy(buf, str);
puts("-- \"\t\"--");
p = strtok(buf, "\t");
while (p) { printf("[%s]\n", p); p = strtok(NULL, "\t"); }

strcpy(buf, str);
puts("-- \",\"--");
p = strtok(buf, ",");
while (p) { printf("[%s]\n", p); p = strtok(NULL, ","); }

strcpy(buf, str);
puts("-- \",\\t\\n\"--");
p = strtok(buf, ",\t\n");
while (p) { printf("[%s]\n", p); p = strtok(NULL, ",."); }

-- "\n"--
[abc:123]
[,tdef:45,ghi:678.]
-- ""--
[abc:123
,tdef:45,ghi:678.]
-- ","--
[abc:123
]
[tdef:45]
[ghi:678.]
-- ",\t\n"--
[abc:123]
[tdef:45]
[ghi:678]
となる過程の処理と理由がさっぱりわかりません。
どうかわかりやすく教えて頂けないでしょうか。
どの変数に何が代入され、どのように値が移動するかを詳しく知りたいです。

A 回答 (2件)

pやbufの値をprintfで表示させると理解しやすいですよ。



要はstrtok()の挙動についてなので。
manやネットで調べてみては。
    • good
    • 0

SEE YOU LATER, ALLIGATOR !

    • good
    • 2

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