#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main (int argc, char* argv[])
{
char* filename = argv[1];
/* Open the file for writing. If it exists, append to it;
otherwise, create a new file. */
int fd = open (filename, O_RDONLY | O_CREAT | O_APPEND, 0666);
// Reading file probleme
close (fd);
return 0;
}
我的问题是,我不能真正找到如何读取缓冲区。我在文件中只有整型,但我如何从它读取到缓冲区呢?
您要查找的函数名为"read"。但是,您必须将之前已经分配的缓冲区传递给它。像这样的代码应该可以工作:
if (fd) {
char buffer[1024];
int n = read(fd, buffer, 1024);
/* ... */
}
调用之后,n将包含从fd中读取的字节数(如果没有则为0,如果发生错误则小于0)。
如果文件中有原始整数,你可以像这样访问它们:
int *ibuffer = (int*)buffer;
然后,ibuffer是一个长度为1024/sizeof(int)的整型数组,包含fd中连续的前n个/sizeof(int)整型。严格地说,这不是完全合法的C语言,但我还没有看到最近的架构,这不会工作。
你是用字符串还是字节表示整型数?如果字符串只使用缓冲区上的sscanf
来读取它。对于字节表示,您可以直接从缓冲区读取原始字节。