温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

标准I/O操作

发布时间:2020-08-11 00:24:31 来源:网络 阅读:440 作者:韩A 栏目:编程语言

标准I/O操作:


1、FILE* fopen(const char* path, const char* mode)

      FILE :文件打开的各种状态信息的指针;

      path: 文件路径;注意,目录文件只能以只读形式打开,不能进行写;

      mode:  文件打开的模式: “r”(只读,且文件必须存在),“w”(只写,如果文件不存在,则创建,如果已经存在,则将其长度截断为0,从头写),“a”(表示追加数据到末尾,如果文件不存在,则创建),“r+”,“w+”,“a+”;

      

2、int fgetc(FILE *stream)  从文件或终端中读取一个字节返回,本来应该返回uchar类型,但是函数原型的返回值是int型,所以要转化为扩展为int型的;这个函数既可以从终端读,也可以从文件中读;


3、int getchar(void) 从终端(只能从终端)中读取一个字节,返回时扩展为int型,原因同上;


4、int fputc(int c,FILE* stream);int putchar(int c); 为写入函数,写入是文件必须是可写的;


5、int fseek(FILE* stream, long offset ,int whence)  用于设置读写指针偏移,返回相对于文件起始位置的偏移量大小;


6、int ftell(FILE *stream) 用于返回当前读写指针的位置;


7、void rewind(FILE *stream) 用于读写指针移动到文件的起始位置;


8、char* gets(char *s)从标准输入一行保存在缓冲区,但是永远不要用这个函数;因为未指定缓存区的大小,所以很容易产生缓冲区溢出,造成错误;


9、char* fgets(char *s, int size, FILE* stream) 表示从指定的文件中读取一行,到用户指定的缓冲区;返回的指针是指针s移动后的位置;

      注意: fgets()只适用于读不含‘\0’的文本文件,因为fgets()会自动在末尾加‘\0’,但是,如果用户在输入中也输入‘\0’,那么就无法识别是fgets自己加的,还是用户加的;另外,由于’\0‘的ASIIC 是0x00,所以在不能读二进制文件;


10、int fputs(const char *s, FILE* stream); 将字符串写入到文件中,不含末尾的’\0‘;

        int puts(const char* s); 将字符串写入到标准输入中;


11、对文件进行的任何操作,都要先明白读写指针在什么地方,这个决定了你读写的位置;


12、fread(void *str, size_t size, size_t nmemb, FILE* stream) 从文件stream 中读取nmemb 个大小为size字节大小的数据到 str;

       fwrite(void *str, size_t size, size_t nmemb, FILE* stream) 同上,是写入文件;


13、全缓冲:等待缓冲区写满以后,才写入内核;常规文件用此方式;

        行缓冲:等待有换行符的时候,就写入内核;标准输入输出用这种方式;

        不带缓冲:用户每次写操作都要调用系统调用,写入内核;

        int fflush(FILE* stream) 用于将缓冲区的数据立即写入内核;成功返回0;


14、标准文件流:FILE:         stdin ,stdout, stderr;


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI