【发布时间】:2012-04-09 23:33:38
【问题描述】:
我在编写将十进制转换为十六进制的代码时遇到问题。
void decToHex (char *decString){
char hexVal[100];
sprintf(hexVal,"%x", *decString);
*decString = hexVal;
return;
}
编译错误:警告:赋值从整数创建一个指针 没有演员表(默认启用);说到“*decString”这一行 = hexVal;" 我试图将我的指针值设置为新发现的十六进制值。
有谁知道我做错了什么?我已经阅读了其他一些帖子,这些帖子说这可能是编译器的问题,但是我们的班级需要使用内置于 putty 服务器中的标准 c99 编译器。关于如何做到这一点的任何想法?我还尝试根据模数 16 的想法创建一个整数数组,但我有更多的问题。
【问题讨论】:
-
看这就是为什么我尝试不连续几个小时编码,我开始犯愚蠢的错误。感谢各位的帮助,不知道我想用 *decString = hexVal 完成什么。我确实有一个问题,为什么它是 strcpy(decString,hexVal) 而不是 strcpy(*decString,hexVal)?抱歉,您也可以看到指针方面还有一些新内容。
-
strcpy 需要获取地址来存储字符串的副本。第一个已经存储在那里的
char将无济于事...... -
strcpy()需要一个指向源和目标的指针,因为它需要知道在内存中的何处查找和存储数据。取消引用指针只是为您提供值,当程序想要在内存中存储某些内容时,这没有帮助。 -
完美,非常感谢大家。