C指针中的编译错误工作在32位,而不是64位

时间:2017-12-07 12:29:11

标签: c

我正在尝试以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中的指针没有经验,所以我更愿意寻求帮助!

1 个答案:

答案 0 :(得分:0)

正如评论中提到的那样,你应该:

  • 包含正确的标题(stdlib.h和string.h)
  • 检查值返回,特别是getenv调用:

    if (!(vhome = (char *)getenv("VHOME"))){
        fprintf(stderr, "getenv(\"VHOME\") returned NULL\n");
        return -1;
    }