想要在C中使用写入模式创建文件



我是新生。我想在linux c程序中创建一个文件,并在其中编写环境变量。如果文件已经存在,我想打开并附加。我写了以下代码。

        char *envFile=getenv("FILENAME");   
        int fdEnv=-1;       
        fdEnv=open(envFile,O_CREAT,O_RDWR,O_APPEND);
        printf("%d",fdEnv);
        char** env;
        if(fdEnv>0)
        {
            for (env = environ; *env != 0; env++)
            {
                char *thisEnv = *env;       
                printf("%s",thisEnv);
                write(fdEnv,thisEnv,strlen(thisEnv));
            }
            close(fdEnv);
        }

但是,当我第一次运行时。创建一个空白文件。并且在执行后保持锁定。看起来有些错误。第二次FDENV保持不到0。

我真的不明白这里发生了什么。请帮助。

尝试使用|分开标志。

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
extern char **environ;
int main(void)
{
    char *envFile = getenv("FILENAME");
    int fdEnv = -1;
    fdEnv = open(envFile, O_CREAT|O_RDWR|O_APPEND, 0644);
    printf("%dn", fdEnv);
    int i = 0;
    while (environ[i]) {
        printf("%sn", environ[i]);
        write(fdEnv, environ[i], strlen(environ[i]));
        char lf = 'n';
        write(fdEnv, &lf, 1);
        i++;
    }
    close(fdEnv);
    return 0;
}

我已经在Linux计算机上运行的代码上方运行。

extern char **environ;
int main()
{
    char **env;
    char* filename = getenv("FILENAME")
    const char* mode = "a";
    FILE* file = fopen( filename, mode );
    for ( env = environ; *env; ++env )
        fprintf( file, "%sn", *env );
    fclose(file);
    return(0);
}

您应该考虑在GetEnv失败,空白等时进行处理;让我知道您是否有任何疑问。

相关内容

  • 没有找到相关文章

最新更新