要测试C++中的truncate
函数的正确性,你可以编写一个简单的程序来创建一个文件,向其中写入一些数据,然后使用truncate
函数来截断该文件
#include<iostream>
#include <fstream>
#include <cstring>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
int main() {
// 创建一个文件并写入一些数据
std::ofstream file("test_file.txt");
if (!file) {
std::cerr << "Error opening file for writing."<< std::endl;
return 1;
}
file << "This is a test file.";
file.close();
// 打开文件并获取文件描述符
int fd = open("test_file.txt", O_RDWR);
if (fd == -1) {
std::cerr << "Error opening file."<< std::endl;
return 1;
}
// 使用truncate函数截断文件
off_t new_size = 5;
if (truncate("test_file.txt", new_size) == -1) {
std::cerr << "Error truncating file."<< std::endl;
close(fd);
return 1;
}
// 检查文件大小是否已更改
struct stat st;
if (fstat(fd, &st) == -1) {
std::cerr << "Error getting file status."<< std::endl;
close(fd);
return 1;
}
if (st.st_size != new_size) {
std::cerr << "File size not changed correctly."<< std::endl;
close(fd);
return 1;
}
// 关闭文件描述符
close(fd);
// 删除文件
remove("test_file.txt");
std::cout << "Test passed!"<< std::endl;
return 0;
}
这个程序首先创建一个名为test_file.txt
的文件,并向其中写入一些数据。然后,它使用truncate
函数将文件大小截断为5字节。接下来,程序使用fstat
函数检查文件大小是否已更改。最后,程序关闭文件描述符并删除文件。
如果truncate
函数正常工作,程序将输出"Test passed!"。如果在测试过程中发生错误,程序将输出相应的错误消息。