要測(cè)試C++中的truncate
函數(shù)的正確性,你可以編寫一個(gè)簡(jiǎn)單的程序來(lái)創(chuàng)建一個(gè)文件,向其中寫入一些數(shù)據(jù),然后使用truncate
函數(shù)來(lái)截?cái)嘣撐募?/p>
#include<iostream>
#include <fstream>
#include <cstring>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
int main() {
// 創(chuàng)建一個(gè)文件并寫入一些數(shù)據(jù)
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函數(shù)截?cái)辔募?/span>
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;
}
// 關(guān)閉文件描述符
close(fd);
// 刪除文件
remove("test_file.txt");
std::cout << "Test passed!"<< std::endl;
return 0;
}
這個(gè)程序首先創(chuàng)建一個(gè)名為test_file.txt
的文件,并向其中寫入一些數(shù)據(jù)。然后,它使用truncate
函數(shù)將文件大小截?cái)酁?字節(jié)。接下來(lái),程序使用fstat
函數(shù)檢查文件大小是否已更改。最后,程序關(guān)閉文件描述符并刪除文件。
如果truncate
函數(shù)正常工作,程序?qū)⑤敵?quot;Test passed!"。如果在測(cè)試過程中發(fā)生錯(cuò)誤,程序?qū)⑤敵鱿鄳?yīng)的錯(cuò)誤消息。