C语言问题 附加到日记文件

编写一个 C 程序,将 1 行附加到$HOME/.diary. 该行应该是其命令行参数,由一个空格后跟一个 '\n' 分隔。这个不应该在标准输出上打印任何内容。它应该只附加到 $HOME/.diary.下面有机翻,请专家写一下内容

img

img

getstatus.c中如何获取环境变量的值的?参考它里面的方法,获取HOME环境变量的值,在这个路径下打开diary文件(用追加方式打开at),然后把命令行的字符串写入文件即可。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char* argv[])
{
    FILE* fp = 0;
    int len = strlen(argv[1]);//获取写入字符串的长度
    int i = 0;
    char path[100]={0};
    char buf='\n';
    //根据getstatus.c中获取环境变量的方法,获取HOME变量的值,并存放在path中,你在这里补充代码
    char *value = getenv("STATUS");

    sprintf(path,"%s/.diary",value);
    //我这里snprintf函数用不了,你可以把sprintf注释掉,用snprintf试试
    //snprintf(path,100,"%s/.diary",value); //组合字符串,在字符串后面加\\n
    printf("文件路径:%s\n",path);

    fp = fopen(path,"at"); //以追加方式打开文件
    if(fp==0) {printf("文件打开失败");return 0;}
    
    

    fwrite(argv[1],1,len,fp); //写入文件
    fwrite(&buf,1,1,fp); //写入\n
    fclose(fp);
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char* argv[])
{
    FILE* fp = 0;
    int len = strlen(argv[1]);//获取写入字符串的长度
    int i = 0;
    char path[100]={0};
    char buf='\n';
    //根据getstatus.c中获取环境变量的方法,获取HOME变量的值,并存放在path中,你在这里补充代码
    char *value = getenv("STATUS");
   
    snprintf(path,100,"%s/.diary",value); //组合字符串,在字符串后面加\\n
    
    while(value[i])
    {
        path[i] = value[i];
        i++;
    }
    if(value[i-1]!='/')
    {
        path[i] = '/';
        path[i+1] = 0;
    }else
        path[i] = 0;
    strcat(path,".diary");//生成完整的文件路径
    
    printf("文件路径:%s\n",path);
    fp = fopen(path,"at"); //以追加方式打开文件
    if(fp==0) {printf("文件打开失败");return 0;}
    
    fwrite(argv[1],1,len,fp); //写入文件
    fwrite(&buf,1,1,fp); //写入\n
    fclose(fp);
    return 0;
}