我目前正在开发一个程序,该程序必须使用系统调用(open()、write()、read() 等...)将任何文件复制到二进制文件中。这是到目前为止的情况。
void copyFileToFD(int destinationFD, int sourceFD){
unsigned char b[64];
int amountRead = -1;
while((amountRead = read(sourceFD, &b, 64)) > 0){
int written = write(destinationFD, &b, amountRead);
}
}
我现在遇到的问题是文本文件。
假设一个文件有这样的文本:
This is some text 12345678
我当前的输出文件显示
This is some text 12345678
我想要的输出文件()
ABCD EF00 0000 0000 0000 0000...
如何更改我的代码以便所有文件都将作为二进制文件复制
我知道 fread() 和 fwrite() 但想知道如何通过系统调用来完成。
感谢您的帮助。
最佳答案
您似乎想将输入转换为十六进制文本输出。您可以使用 printf()
来完成:
void copyFileToFD(int destinationFD, int sourceFD){
unsigned char ch;
ssize_t amountRead = -1;
while((amountRead = read(sourceFD, &ch, sizeof(ch))) > 0){
dprintf(destinationFD, "%.2x ", ch);
}
}
关于使用系统调用在 C 中复制文件并将其转换为二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094846/