一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第26天,点击查看活动详情。
大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN C/C++领域新星创作者blog.csdn.net/chuxinchang…
- 掘金LV3用户 juejin.cn/user/138142…
- 阿里云社区专家博主,星级博主,技术博主 developer.aliyun.com/profile/exp…
- 华为云云享专家 bbs.huaweicloud.com/community/m…
6.流
流:高度抽象的概念
printf -- 打印数据到屏幕上
scanf - 从键盘上读取数据
C语言的程序,只要运行起来,就默认打开了3个流:
标准输出流: stdout
标准输入流: stdin
标准错误流: stderr
这三个流都是FILE*类型
- 标准输出流->stdout 即屏幕
- 标准输入流->stdin 即键盘
7.文件的顺序读写
这些函数都在#include<stdio,h>库函数里
fputc - 每次写入一个字符
-
第一个参数:字符/字符对应的ASCII码值
-
第二个参数:文件指针
-
文件的打开方式为:写入
例子1:写到文件流中
int main()
{
//打开文件
FILE* pf = fopen("data.txt","w");
if(NULL == pf)
{
perror("fopen");//打印错误信息
return -1;
}
//写文件
fputc('M',pf);
fputc('a',pf);
fputc('n',pf);
fputc('g',pf);
fputc('o',pf);
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
标志文件位置的指针pf在改变,每次写入一个字符,标志指针后移
例子2:写到标准输出流 - stdout - 屏幕
fputc不仅可以写到文件流,还可以写到标准输出流(屏幕)中
int main()
{
fputc('M',stdout);
fputc('M',stdout);
fputc('M',stdout);
return 0;
}
相当于putchar,printf("%c\n",ch)
综上:fputc可以用于标准输出流也可以用于文件流,->所以适用于所有输出流
fgetc - 每次读取一个数据
-
参数:文件指针
-
返回参数:int类型->字符对应的ascii码值
-
文件的打开方式为:读取
现在txt文件中存放的:
例子1:读取文件流
int main()
{
//打开文件
FILE* pf = fopen("data.txt","r"); //以只读方式打开
//要进行判断是否打开成功
if(NULL == pf)
{
perror("fopen");
return -1;
}
//读文件
int ch = fgetc(pf);
printf("%c\n",ch);//M
ch = fgetc(pf);
printf("%c\n",ch);//a
ch = fgetc(pf);
printf("%c\n",ch);//n
//关闭文件
fclose(pf);
pf = NULL; //手动置空
return 0;
}
执行结果:
文件指针每读一次都发生变化。指针记录的是当前指向的字符, 一次读一个字符
例子2:读取标准输入流 - stdin -键盘
int main()
{
int ch = fgetc(stdin);
printf("%c\n",ch);
ch = fgetc(stdin);
printf("%c\n",ch);
ch = fgetc(stdin);
printf("%c\n",ch);
return 0;
}
从键盘上读取数据->相当于getchar,scanf("%c",&ch)