netdoger 发表于 2016-06-21 15:15

请问个字符串中取整数以及把整数存放到字符串中的问题

我在看一个System V消息队列的视频时,看到
老师在讲从字符串的开头4个字符中取整数(前4个字符
一定是整数),他的代码是类似这样的:
char str[]="5678HelloWorld";
int a;
a=*((int*)str);
printf("a=%d\n",a);
可是我输出的确不是5678;请问为什么?怎么做?

另外他在讲把一个整型存放到一个字符串的前4位,
代码类似这样的:
char str;
int a=5678;
*((int*)str)=a;
printf("str=%s\n",str);       
可是我输出的也不是5678,请问为什么?怎么做?
(我是在linux下做的)       

hellioncu 发表于 2016-06-21 15:20

"5678" = 0x35363738,或者0x38373635
---
sprintf(buf, "%d", 5678);
这样buf中才是“5678”

qianguozheng 发表于 2016-06-21 16:37

atoi("5678"), 這個才是

yulihua49 发表于 2016-06-21 21:08

netdoger 发表于 2016-06-21 15:15 static/image/common/back.gif
我在看一个System V消息队列的视频时,看到
老师在讲从字符串的开头4个字符中取整数(前4个字符
一定是整 ...
啥老师啊!!!

bruceteen 发表于 2016-06-22 08:18

我猜你代码复演错了吧,你老师放进去的是整型值5678,而非字符串"5678"#include <stdio.h>

int main( void )
{
    char s;

    // 放进去
    *((int*)s) = 5678;

    // 取出来
    int v = *((int*)s);
    printf( "%d\n", v );
}

netdoger 发表于 2016-06-22 08:36

回复 5# bruceteen
应该这是对的

   

流氓无产者 发表于 2016-06-22 09:37

netdoger 发表于 2016-06-21 15:15 static/image/common/back.gif
我在看一个System V消息队列的视频时,看到
老师在讲从字符串的开头4个字符中取整数(前4个字符
一定是整 ...
你看到是ascii
机器看到的是5678是数字

cokeboL 发表于 2016-06-22 09:57

天啦噜,,,,,,,
页: [1]
查看完整版本: 请问个字符串中取整数以及把整数存放到字符串中的问题