当我用strtok标记c字符串并用%s用printf打印出标记时,我只是想弄清楚后台发生了什么。
这是示例:
char str[] = "Where - is - the - end - of - tokens?";
const char s[2] = "-";
char *token;
/* get the first token */
token = strtok(str, s);
/* walk through other tokens */
while( token != NULL ) {
printf( " %s\n", token );
token = strtok(NULL, s);
}
return(0);
我的信念: -strtok不会创建给定c字符串的副本,只是返回给定c字符串第一个字符的内存地址。 -带有%s的printf将从内存地址中打印出字符,直到/ 0。
我的问题如下: printf如何知道在哪里停止用%s打印出令牌的字符?
请帮助我了解%s与printf的这种行为。