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