免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1895 | 回复: 4
打印 上一主题 下一主题

[C] 请教问题fopen [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-30 10:11 |显示全部楼层 |倒序浏览
我写了一个fopen的学习程序,运行过去后,打印出来
Cannot open input the file
我的目录中也有$HOME/zlj/ex/win 这个文件,为什么文件读出来是NULL,写不进去呢,谢谢大家指导


#include    <stdio.h>
#include    <string.h>

int main()
{
    FILE *fp;
    char sFpNm[50];

    sprintf(sFpNm,"$HOME/zlj/ex/win");
    printf("haha--%s\n",sFpNm);

    if ((fp = fopen(sFpNm,"wr")) == NULL ){
       fprintf(stderr, "Cannot open input the file \n");
       return 100;
    }

    fprintf(fp,"%s|%s\n","hahahouhou","houhouhaha");

    fclose(fp);

    return 0;

}

论坛徽章:
0
2 [报告]
发表于 2009-07-30 10:20 |显示全部楼层
谢谢,改为实际目录就可以了。
还想问一下,在什么情况下可以用$HOME来做目录呢

论坛徽章:
0
3 [报告]
发表于 2009-07-30 10:34 |显示全部楼层
谢谢

论坛徽章:
0
4 [报告]
发表于 2009-07-30 12:51 |显示全部楼层
4楼的


回复 #3 zlj0721 的帖子
$HOME是shell里面的环境变量,你的程序是由shell启动的,应该也会继承这个环境变量。但是在C里面取环境变量还是比较麻烦的,取出来还要自己解析,很少有人会这么做。

我尝试了一下,可以在 .profile 中定义
export DWNDIR=$HOME/dwn
就可以执行下面的带$HOME路径的程序了
#include    <stdio.h>
#include    <string.h>

int main()
{
    FILE *fp ;
    char sFpNm [50];

    sprintf(sFpNm ,"%s/%s",(char *)getenv("DWNDIR"),"win");
    printf("haha--%s\n",sFpNm );

    if ((fp = fopen(sFpNm,"w")) == NULL ){
       fprintf(stderr, "Cannot open input the file \n");
       return 100;
    }

    fprintf(fp ,"%s|%s\n","oooooo","qqqqqq");

    fclose(fp);

    return 0;

论坛徽章:
0
5 [报告]
发表于 2009-07-30 13:06 |显示全部楼层
ok,谢谢指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP