【发布时间】:2019-12-29 19:00:13
【问题描述】:
在我的程序中,我目前可以逐字符读取具有给定名称“fichier1.txt”的文件,但我正在寻找的是存储一行(此处为行字符指针),然后以这种方式显示:
-ligne 1 : 内容行 1
-line 2 : 内容第 2 行
-等等...
我尝试按字符存储字符,但由于它是一个指针,而且我对指针非常熟悉,所以我无法存储一行,然后重用指针来存储下一行的字符。
我不得不说它是学校项目的一部分,我必须使用 POSIX 标准。
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include <pthread.h>
#include<string.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(){
int read_fd, write_fd;
off_t offset = 0;
char lu;
struct stat statFd;
char *fichier = "fichier1.txt";
read_fd = open(fichier,O_RDONLY);
stat(fichier, &statFd);
if(read_fd == -1){
perror("open");
exit(EXIT_FAILURE);
}
int i = 0;
char * line; // variable to store line
while(lseek(read_fd,offset, SEEK_SET) < statFd.st_size)
{
if(read(read_fd, &lu, 1) != -1)
{
printf("%c",lu);
offset++;
} else {
perror("READ\n");
close(read_fd);
close(write_fd);
exit(EXIT_FAILURE);
}
}
return 0;
}
我想使用 open() 函数而不是 fopen()
【问题讨论】:
-
不要包含你能想到的每一个标题——只包含你需要的那些。
-
打开文件后,您可以使用 fstat 获取统计信息,从而避免再次打开文件和某些竞争条件。
标签: c linux io posix system-calls