我用C语言编写了一个程序,该程序读取文本文件并将特殊词存储在链接列表中。我想创建一个新的文本文件以输出链接列表,而不修改原始文本文件。
新文本文件名应为“ originalfilename.newfile.txt”。我该怎么办?
编辑: 我确实输入了一个文本文件,所以我知道有一种方法可以用fopen编写文本文件,但是所有这些方法都与制作“新”文本文件无关,而只是覆盖或重写它。
我所想的是,我可以使用哪种函数来创建文本文件,因为我看到的只是使用fopen函数。
答案 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?
如果有问题,只问。 :)