C 打印错误的值

C 打印错误的值,c,C,下面的代码假设打印a的值。而是打印一些随机值。 你能帮我吗 void main() { int a=113, b=126, *d ; char *temp, *temp4,*j, *g; j=(char*)(&a); g=(char*)(&b); temp=strcat(j,","); temp=strcat(temp,g); temp4=strtok(temp, ","); d=(int*)(temp4);

下面的代码假设打印a的值。而是打印一些随机值。 你能帮我吗

void main()
{
    int a=113, b=126, *d ;
    char *temp, *temp4,*j, *g;

    j=(char*)(&a);
    g=(char*)(&b);

    temp=strcat(j,",");
    temp=strcat(temp,g);

    temp4=strtok(temp, ",");

    d=(int*)(temp4);
    printf("%d\n",d);
}

在打印d的地址时,如果要打印d指向的地址中存储的值,则需要取消对指针的引用

printf("%d\n", *d);

下次,首先咨询调试器:

那么,您是否已在调试器中逐步检查了代码并检查了所有变量,等等。?这是第一件要做的事。这看起来像是人工构建的拼图,而不是任何人都想实现的真实代码。好吧,它是人工制作的。我只想尝试这样做。变量temp4指向temp中由逗号分隔的第一个标记。它实际上指向字节“113”、“44”、“126”和“0”。当d=int*temp时,您将char*类型转换为int*,因此d指向与temp4相同的字节。当您打印f%d\n,d时,实际上是打印d指向的整数的地址。当您打印f%d\n、*d时,您打印d指向的整数的值。该值存储在我前面描述的4个字节中。解释为int,这是8257649。每次运行程序时,都会看到相同的值。您希望看到什么值?13?我是说113当然…谢谢你的回答。我已经试过你说的了。它不起作用。它仍然打印错误的值。我也尝试过使用调试器,但不知道如何解决这个问题。