我需要将文本文件中的 a 字符替换为“?”。它没有按预期工作。
该文件的内容为“abc”(不带引号),我必须使用 unix 系统调用:lseek()、open() 和 write()。我不能使用标准的 C 文件 I/O 函数。
该计划最终将其扩展为更通用的“查找和替换”实用程序。
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main(){
int file = open("data", O_RDWR); //open file with contents 'abc'
lseek(file,0,0); //positions at first char at beginnging of file.
char buffer;
read(file,&buffer, sizeof(buffer));
printf("%c\n", buffer); // text file containing 'abc', it prints 'a'.
if (buffer == 'a'){
char copy = '?';
write(file,©,1); //text file containing 'abc' puts '?' were 'b' is.
}
close(file);
}
文件“数据”包含abc,我想用?并使其成为?bc,但我得到了一个?c
read()正在读取正确的字符,但write()正在写入下一个字符。为什么是这样?
一直在谷歌搜索几个小时。
谢谢