设计一程序,要求用带缓存的流文件I/O操作,在“./tmp”目录下,打开名称为“tmpfile”的文件。如果该文件不存在,则创建此文件;如果存在,将文件清空后关闭。W或w+ c语言 Linux
时间: 2024-10-16 20:04:18 浏览: 45
在Linux环境下,我们可以使用`fopen()`函数结合`O_CREAT | O_TRUNC | O_RDWR`标志来实现带缓存的流文件I/O,并利用`tempnam()`函数来动态生成文件名。以下是一个简单的C语言示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TEMP_DIR "./tmp"
#define BUFFER_SIZE 4096
// 使用tempnam生成临时文件名
char* create_temp_file_name() {
char temp_path[256];
char* temp_name = tempnam(TEMP_DIR, "tmpfile");
if (temp_name == NULL) {
perror("Failed to generate temporary file name");
exit(EXIT_FAILURE);
}
return temp_name;
}
int main() {
char* fileName = create_temp_file_name();
// 打开文件,若不存在则创建并设置为读写模式,如果已存在则清空内容
FILE* file = fopen(fileName, "w+");
if (file == NULL) {
perror("Failed to open or create the file");
free(fileName);
exit(EXIT_FAILURE);
}
// 清空文件
fseek(file, 0, SEEK_SET); // 移动到文件开始位置
rewind(file); // 从头开始
memset(NULL, fsize(file), 0); // 或者直接 fclose(file); 再次 fopen 就会清空
// 关闭文件
fclose(file);
// 文件操作完成后删除临时文件
remove(fileName);
printf("File operation completed.\n");
free(fileName);
return 0;
}
阅读全文
相关推荐


















