对环境变量的操作产生的奇怪的错误

BaiYangSpirit 2006-06-08 06:54:21
程序目的:通过函数取得当前环境变量,然后修改之,但是程序在准备修改之前便错误了。
错误类型:段错误。
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char *old_env="";
char *new_env="PATH=";

old_env = getenv("PATH");
strcat(old_env, "/usr/include");
strcat(new_env, old_env);
printf("%s", new_env);
/* putenv(new_env);*/
exit(0);
}
==========
请高手赐教
...全文
121 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gudulyn 2006-06-09
  • 打赏
  • 举报
回复
楼上正解
  • 打赏
  • 举报
回复
问题出在这里char *new_env="PATH="; new_env是一个指向常量字符串的指针,而在strcat(new_env, old_env);中你试图修改这个指针,这就产生了错误。

正确的做法可以是这样:char new_env[1000]="PATH="; 这里的1000你可以随便设置,但是一定要够大,能容下环境变量的所有字符串。

改完之后,我在RH9+GCC3.3.3下运行通过。

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧