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; }