700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux fputc fgetc fseek rewind 函数

linux fputc fgetc fseek rewind 函数

时间:2018-12-25 05:13:41

相关推荐

linux fputc fgetc fseek rewind 函数

目录

前言fputc 函数fgetc 函数fseek函数rewind函数

前言

<sprintf fprintf 函数 >

前一节讲了 sprintf fprintf 函数 的缓存问题 在他们的基础上加了一个while(1);来验证 结果都是输出的不管怎么样 都会写入到内核态 内核态在输出到终端 并且注意 sprintf只是一个存放缓存的函数 还需要一个printf 来配合使用。这节来讲 fputc fgetc 函数 的缓存问题

fputc 函数

fputc 简单理解就是往文件里面写入字符

#include<stdio.h>int main(){FILE *fd;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}pritnf("fopen is success\n");fputc('a',fd);fclose(fd);return 0;}

如果证明是否是行缓存直接在后面加 while(1);就行了

#include<stdio.h>int main(){FILE *fd;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}pritnf("fopen is success\n"); fputc('a',fd);while(1); flcose(fd);return 0;}

结果不输出 证明了 他不是行缓存 但是 有 缓存 怎么证明呢

在前面基础上加 fputc('\n',fd); 1 加入换行符 试试它会不会不受到while(1);的影响 正常情况 换行是行缓存成立的条件之一 反之就不成立。

#include<stdio.h>int main(){FILE *fd;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}pritnf("fopen is success\n");fputc('a',fd);fputc('\n',fd);while(1);flcose(fd);return 0;}

文件里 还是没有内容 所以 fputc 不是行缓存 但有缓存。说明 fputc 不是行缓存函数

fgetc 函数

用 fgetc 把fputc 内容(文件内容 )到输出终端

#include<stdio.h>int main(){FILE *fd;int str;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is success\n");fputc('a',fd);str=fgetc(fd);printf("str is %c\n",str);flcose(fd);return 0;}

为什么乱码呢 需要光标移动 因为fputc 到了最后 但是fgetc 却不知道。

fseek函数

这么配置就行了

SEEK_SET :从0开始 offest : 0单位 stream: 文件流

#include<stdio.h>int main(){FILE *fd;int str;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is success\n");fputc('a',fd);fseek(fd,0,SEEK_SET);str=fgetc(fd);printf("str is %c\n",str);flcose(fd);return 0;}

rewind函数

rewind(fd) = = fseek(fd,0,SEEK_SET);写 rewind(fd) 就很方便

#include<stdio.h>int main(){FILE *fd;int str;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is success\n");fputc('a',fd);rewind(fd);str=fgetc(fd);printf("str is %c\n",str);flcose(fd);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。