1、使用标准库的fopen和fputs
使用fopen
函数以追加模式"a"打开文件,然后使用fputs
将文本写入文件。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "a"); // 以追加模式打开文件
if (file == NULL) {
printf("无法打开文件。\n");
return 1;
}
fputs("这是要追加的文本。\n", file); // 将文本写入文件
fclose(file); // 关闭文件
return 0;
}
2、使用fopen和fprintf
使用fprintf
可以在追加文本的同时进行格式化输出。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "a");
if (file == NULL) {
printf("无法打开文件。\n");
return 1;
}
fprintf(file, "这是要追加的文本,带有格式化的内容:%d\n", 123);
fclose(file);
return 0;
}
3、使用低级文件操作函数open和write
使用POSIX的open
函数以追加模式打开文件,write
函数写入数据。这种方法不依赖于标准C库。
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
int fd = open("example.txt", O_WRONLY | O_APPEND);
if (fd == -1) {
printf("无法打开文件。\n");
return 1;
}
const char *text = "这是要追加的文本。\n";
write(fd, text, strlen(text)); // 写入文件
close(fd); // 关闭文件
return 0;
}
4、使用fopen和fwrite
fwrite
提供了将二进制数据写入文件的能力,在这里用于写入文本数据。
#include <stdio.h>
#include <string.h>
int main() {
FILE *file = fopen("example.txt", "a");
if (file == NULL) {
printf("无法打开文件。\n");
return 1;
}
const char *text = "这是要追加的文本。\n";
fwrite(text, sizeof(char), strlen(text), file); // 使用fwrite写入数据
fclose(file);
return 0;
}
5、使用内存映射文件(Memory-Mapped File)和mmap
利用mmap
将文件映射到内存,然后直接操作内存来追加数据。适用于特定场景下的高级操作。
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <string.h>
int main() {
int fd = open("example.txt", O_RDWR | O_APPEND);
if (fd == -1) {
printf("无法打开文件。\n");
return 1;
}
const char *text = "这是要追加的文本。\n";
size_t text_len = strlen(text);
lseek(fd, 0, SEEK_END); // 定位到文件末尾
char *map = mmap(NULL, text_len, PROT_WRITE, MAP_SHARED, fd, 0);
if (map == MAP_FAILED) {
printf("内存映射失败。\n");
close(fd);
return 1;
}
memcpy(map, text, text_len); // 将数据复制到映射内存中
munmap(map, text_len); // 解除内存映射
close(fd);
return 0;
}