阅读量:0
要测试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!"。如果在测试过程中发生错误,程序将输出相应的错误消息。