上下文: 这是关于考试的学习指南的问题。
问题 :编写一段代码,使用执行以下操作的低级Unix I / O系统调用(不是stdio或iostreams):
o打开一个名为“data.txt”的文件进行阅读。
o从文件中读取最多512个字节到名为buf。
的数组中o关闭文件。
如果在任何步骤中出现错误,请输出错误消息并退出程序。 包括代码使用的任何变量的定义。
我在c
语言的linux环境中使用pico IDE。我知道如何使用#include <stdio.h>
轻松完成此操作,但我不知道如何在没有它的情况下编写代码。现在我现在有:
#include <stdio.h>
int main()
{
// File var
FILE *fileVar;
char buff[512];
// Open it
fileVar = fopen("data.txt", "r");
// Check for error
if(fileVar == NULL)
{
perror("Error is: ");
}
else
{
fscanf(fileVar, "%s", buff);
printf("The file contains: %s\n", buff);
fgets(buff, 512, (FILE*)fileVar);
fclose(fileVar);
}
}
如何在不使用库#include<stdio.h>
的情况下将上述代码翻译成工作?
答案 0 :(得分:6)
您需要的功能称为open()
(来自<fcntl.h>
),read()
(来自<unistd.h>
)和close()
(来自<unistd.h>
) 。这是一个用法示例:
fd = open("input_file", O_RDONLY);
if (fd == -1) {
/* error handling here */
}
count = read(fd, buf, 512);
if (count == -1) {
/* error handling here */
}
close(fd);
答案 1 :(得分:2)
问题是使用UNIX低级I / O例程。这些都是在unistd.h中定义的,因此您需要#include <unistd.h>
,然后需要调用其中定义的open
,read
和close
。