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

strtok() as a parameter in printf() printing value in reverse

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

参数按调用约定顺序被推入堆栈,在您的情况下,这是相反的...因此参数 5 首先计算并推入堆栈,然后是 4、3、2 和格式字符串。

正如之前的许多评论所建议的那样,您的调用方式非常令人沮丧, 应该避免。