我正在尝试以64位编译C程序。它已经在32位工作了几年,并被一些客户使用。
在32位工作的代码的示例:
#include <stdio.h>
int main() {
char* rcfilename ;
char* vhome ;
char* script = "/script/main.tcl" ;
vhome = (char *)getenv("VHOME");
rcfilename = (char *) malloc(strlen(vhome) + strlen(script) + 1) ;
strcpy(rcfilename, vhome) ;
return 0;
}
在64位的编译中,我有一个错误:
指针和不同大小的整数之间的转换
和执行中的分割故障。
我没有C中的指针经验,所以我更喜欢寻求帮助!
如评论中所述,您应该:
- 包括适当的标头(stdlib.h and string.h)
-
检查值返回的值,特别是getEnv调用:
if (!(vhome = (char *)getenv("VHOME"))){ fprintf(stderr, "getenv("VHOME") returned NULLn"); return -1; }