我想将文字写入文件。我必须使用write()而不是fwrite()
void write(char *buffer, char *target){
int fh;
if((fh=open(target, O_RDWR)) >= 0){
printf("It works\n");
} else {
printf("Cannot open\n");
}
if((write(fh, buffer, sizeof(buffer))) >= 0){
printf("-> It works\n");
} else {
printf("Cannot write\n");
}
close(fh);
}
我能够写入文件,但我无法阅读。缓冲区包含一些文本但是当我打开目标文件时,我得到的是\ 00 \ 00 \ 00 \ 00
我听说有可能使用fopen和fwrite,但我必须使用open()和write()。我希望有人可以帮助我。
答案 0 :(得分:3)
if((write(fh, buffer, sizeof(buffer))) >= 0){
您需要将缓冲区的长度传递给您的函数。 sizeof(缓冲区)将返回 char *数据类型的大小(4(32位)或8(64位)字节)。
答案 1 :(得分:1)
你真的不想定义自己的write()
,因为它会为系统调用C包装器设置别名,也称为write。
另外,如果缓冲区中包含一个字符串,则需要准确写出其长度。
void mywrite(char *buffer, char *target) {
. . .
write(fh, buffer, strlen(buffer))
答案 2 :(得分:1)
a)你自己的函数名是写
b)使用strlen而不是sizeof作为写入的最后一个参数。
所以
a)将您的功能名称更改为除写入之外的其他名称。
b)使用strlen而不是sizeof。