如果你有一个字符串如下
str="insert 111,name,123456789"
当您将其传递给strtok并尝试打印值时,它们会反向输出。
例如:
char* token=strtok(str," ");
printf("%s %s %s %s\n",token,strtok(NULL,","),strtok(NULL,","),strtok(NULL,","));
output: insert 1234567 name 1111
代替:insert 111 name 123456789
为什么会这样?如何解决这个问题?
答案 0 :(得分:1)
参数按照“调用约定”顺序被推送到堆栈,在您的情况下,反向...因此参数5首先在堆栈中进行评估和推送,然后是4,3,2和格式字符串。
之前的评论很多,你的电话风格非常气馁, 应该避免。