开发者社区> 问答> 正文

linux 关于文件的操作

#include
#include
#inlcude
int main()
{
int fd;
int temp;
fd=open("./opentest",O_RDWR|O_CREATE,S_IRWXU);
temp=close(fd);
exit(0);
}

编译出现如下错误:

exam301open.c: In function ‘main’:
exam301open.c:9: error: ‘O_CREATE’ undeclared (first use in this function)
exam301open.c:9: error: (Each undeclared identifier is reported only once
exam301open.c:9: error: for each function it appears in.)

请问是什么原因呢?谢谢!

展开
收起
云栖技术 2016-06-06 13:24:18 2224 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!

    read函数(读取文件)
    read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。
    使用格式如下:
    number = read( ...
    read函数(读取文件)
    read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。
    使用格式如下:
    number = read(handle, buffer ,n) ;
    上述read调用函数中,各个参数的定义如下:
    handle: 这是一个已经打开的文件句柄,表示从这个文件句柄所代表的文件读取数据。
    buffer: 指缓冲区,即读取的数据会被放到这个缓冲区中去。
    n: 表示调用一次read操作,应该读多少数量的字符。
    number:表示系统实际所读取的字符数量。
    假设某个文件的长度是600字符,而n的值是512,则在第1次调用读这个文件时,系统可以正常地读取512个字符地内容,并将这些字符数量传给number变量,因

    此number的值将变为88。要第2次读取这个文件时,因为文件已经没有内容可供读取了,此时系统会返回0给number。另外,如果读取文件失败,系统将返回-1

    给number。
    比如一个有100个字节的文件,第一次读取10个字节,这时读取指针在第10个字节处。再次进行10个字节的读操作时,会接着第一次读的位置接着往后读。如果

    还想从开始读,可使用lseek函数定位。

    Code:
    #include "lyl.h"
    #define BUF 512
    main()
    {
     static char filename[]="t1.txt" ;
     char buffer[BUF] ;
     int handle ;
     int i ;
     int total = 0 ;
     handle = open(filename,O_RDONLY) ;
     if ( handle == -1 )
     {
      printf("[%s] create fail !!!!",filename) ;
      exit(1) ;
     }
     else
     {
      while( (i = read(handle,buffer,BUF) ) > 0 )
       total =i ;
     }
     printf("The total character in 《%s》 is %d",filename,total ) ;
     exit(0) ;
    }

    程序执行结果:

    The total character in 《t1.txt》 is 11
    $cat t1.txt
    1234567890
    2019-07-17 19:28:19
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载