【发布时间】:2017-01-31 07:43:54
【问题描述】:
我编写了一个小程序将 char 转换为 long,但是当我尝试打印 char 形式时,它的输出被破坏了。
int main()
{
long l;
char *buf = "127.0.0.1";
memcpy(&l, buf, sizeof(long));
printf("%s\n", (char *)&l);
return 0;
}
输出如下:
127.0.0.t�턾U
我知道我遗漏了一些简单的东西,但我正在画一个空白。
【问题讨论】:
-
这里有很多未定义的行为。您基本上只是将前 8 个字符复制到一个长槽中并打印一个非空终止字符指针。真的没有转换成长期发生的事情,幸运的是,打印输出没有继续进行。我建议您阅读 C 入门书——也许是 K&R 书。
-
一切都错了,你最好回到你的 C 书,当你对所有这些是如何工作的了解更多时再回来。
-
你缺少的是这不应该工作。
-
我没有看到任何代码来转换任何东西。我看到代码尝试将字符串复制到应该保存很长的东西中,然后尝试从保存很长的东西中打印字符串。真正转换任何东西的代码在哪里?
标签: c long-integer