如何在不使用stdio.h库的情况下从文件读写?

时间:2016-04-26 21:45:42

标签: c readfile

上下文: 这是关于考试的学习指南的问题。

  

问题 :编写一段代码,使用执行以下操作的低级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>的情况下将上述代码翻译成工作?

2 个答案:

答案 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>,然后需要调用其中定义的openreadclose