strtok()作为printf()中的参数反向打印值

时间:2017-05-27 19:37:43

标签: c string printf strtok

如果你有一个字符串如下 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 为什么会这样?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

参数按照“调用约定”顺序被推送到堆栈,在您的情况下,反向...因此参数5首先在堆栈中进行评估和推送,然后是4,3,2和格式字符串。

之前的评论很多,你的电话风格非常气馁, 应该避免。