我正在尝试以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位的Compil中我有一个错误:
指针和不同大小的整数之间的转换
执行中的分段错误。
我对c中的指针没有经验,所以我更愿意寻求帮助!
答案 0 :(得分:0)
正如评论中提到的那样,你应该:
检查值返回,特别是getenv调用:
if (!(vhome = (char *)getenv("VHOME"))){
fprintf(stderr, "getenv(\"VHOME\") returned NULL\n");
return -1;
}