0801[软件编程]

报错解决:

在程序运行出错时,可以在头文件加上#include <errno.h>

在报错的位置输入printf("%d",errno);

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
#include<errno.h>
int main(void)
{
    int fd = 0;
    int fd1 = 0;
    ssize_t ret = 0;
   ssize_t nret = 0;
    char str[1024*750] = {0};
    fd = open("C语言.jpg",O_RDONLY);
    fd1 = open("b.jpg", O_WRONLY|O_CREAT|O_TRUNC,0664);
    if(-1 == fd)
    {
        perror("fail to open");
        return -1;
    }
    

    if(-1 == fd1)
    {
        close(fd);
        printf("%d",errno);

    }
printf("%d\n",fd1);

    ret = read(fd,str,sizeof(str));
    printf("%d\n",ret);
    printf("%s",str);
    nret = write(fd1,str,sizeof(str));
    if(nret == -1)
    {
        printf("errno is:%d\n",errno);
    }
    printf("%ld\n",nret);
    close(fd);
    close(fd1);
    return 0;
}

标准IO


    1.打开文件   fopen
    2.读写文件   fgetc fputc 
                fgets fputs 
                fscanf fprintf 
                fread fwrite 
    3.关闭文件   fclose

流的定位:


    偏移量:读和写都在偏移量之后的位置进行
    int fseek(FILE *stream, long offset, int whence);
    功能:
        设置流的偏移量
    参数:
        stream:文件流指针
        offset:偏移量 
        whence:
            SEEK_SET        文件开头
            SEEK_CUR        当前位置
            SEEK_END        文件结尾
    返回值:
        成功返回当前偏移量
        失败返回-1 

    long ftell(FILE *stream);
    功能:
        获取流的偏移量 
    
    void rewind(FILE *stream);
    功能:
        将流的偏移量重新设置到开头

    fseek(fp, 0, SEEK_SET);


文件IO:


1.打开文件  open
2.读写文件  read write 
3.关闭文件  close 

1.打开文件:


    open
    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
    功能:
        打开文件,返回文件描述符 
    参数:
        pathname:文件路径 
        flags:打开方式
            必须包含:O_RDONLY、O_WRONLY、O_RDWR 三个其中之一
            O_CREAT         文件不存在创建
            O_TRUNC         文件存在清0 
            O_APPEND        追加 
            O_EXCL          文件存在报错 
            O_NONBLOCK      非阻塞 
            O_ASYNC         异步IO 
            ..
        mode:权限
            只要有O_CREAT标识,表示需要加上权限:
            rwx rwx rwx 
            rw- rw- r-- 
            110 110 100
        0   6   6   4
    返回值:
        成功返回文件描述符
        失败返回-1  

        文件描述符:很小的非负整数,而且新的文件描述符总是尚未被使用的最小的非负整数

0   STDIN_FILENO    -> stdin 
1   STDOUT_FILENO   -> stdout 
2   STDERR_FILENO   -> stderr 

2.close 
   int close(int fd);
   功能:
     关闭文件描述符
     成功返回0 
     失败返回-1  

3.write
   ssize_t write(int fd, const void *buf, size_t count);
   功能:
    向文件描述符中写入buf开始的count个字节 
   参数:
    fd:文件描述符 
    buf:写入的数据 
    count:写入的字节数 
   返回值:
    成功返回写入的字节数 
    失败返回-1

4.read 
   ssize_t read(int fd, void *buf, size_t count);
   功能:
    从文件描述符中读取数据到buf开始的空间中,最多读取count个字节 
   参数:
    fd:文件描述符 
    buf:存放数据空间首地址 
    count:最多读取的字节数 
   返回值: 
    成功返回读取的字节数
    读到文件末尾返回0  
    失败返回-1

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值