如何创建一个新的文本文件作为输出C

时间:2019-05-17 10:03:15

标签: c io text-files

我用C语言编写了一个程序,该程序读取文本文件并将特殊词存储在链接列表中。我想创建一个新的文本文件以输出链接列表,而不修改原始文本文件。

新文本文件名应为“ originalfilename.newfile.txt”。我该怎么办?

编辑: 我确实输入了一个文本文件,所以我知道有一种方法可以用fopen编写文本文件,但是所有这些方法都与制作“新”文本文件无关,而只是覆盖或重写它。

我所想的是,我可以使用哪种函数来创建文本文件,因为我看到的只是使用fopen函数。

1 个答案:

答案 0 :(得分:0)

我希望我没弄错。

#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

char* concat(const char *s1, const char *s2)
{
    char *result = malloc(strlen(s1) + strlen(s2) + 1); // +1 for the null-terminator
    // in real code you would check for errors in malloc here
    strcpy(result, s1);
    strcat(result, s2);
    return result;
}

// Take the filename, remove the .txt and add .newfile.txt
char *get_new_filename(char *filename) {
    int len = strlen(filename);
    filename[len - 4] = '\0';
    char *new_filename = concat(filename, ".newfile.txt");
    return new_filename;
}

void createNewFile(char *filename, char *result) {
    char *new_filename = get_new_filename(filename);
    int fd = open(new_filename, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
    write(fd, result, strlen(result));
}

您可以使用参数createNewFile调用函数createNewFile("filename.txt", my_output_text);

concat函数是从这里获取的:
How do I concatenate two strings in C?

如果有问题,只问。 :)