目录
输入一个文本并按下回车键时,程序读取输入,但是要求格式要匹配
使用fopen()函数来创建一个新的文件或者打开一个已有的文件
基本介绍
- 文件在程序中是以流的形式来操作的
流:数据在数据源(文件)和程序(内存)之间经历的路径
输入流:数据从数据源(文件)到程序(内存)的路径 【读文件】
输出流:数据从程序(内存)到数据源(文件)的路径 【写文件】
标准文件
- C语言把所有的设备都当作文件,设备(如显示器)被处理的方式与文件相同
- 文件指针是访问文件的方式
- C语言中的I/O(输入/输出)通常使用printf()和scanf()两个函数。scanf()函数用于从标准输入(键盘)读取并格式化,printf()函数发送格式化输出到标准输出(屏幕)
输入&输出函数
getchar()&putchar()函数
- getchar()函数从屏幕上读取下一个可用的字符,并把它返回为一个整数
int getchar()
- putchar()函数把字符输出到屏幕上,并返回相同的字符
int putchar(int c)
getchar()函数和putchar()函数的练习
#include <stdio.h>
int main( )
{
int c;
printf( "Enter a value :");
c = getchar( ); //读取一个char ,并返回为一个int
printf( "\nYou entered: ");
putchar( c ); // 可以在屏幕上显示
printf( "\n");
getchar(); //过滤回车
getchar();//暂停
return 0;
}
gets()&puts()函数
- gets()函数从stdin(键盘)读取一行到s所指向的缓冲区,直到一个终止符或EOF
char *gets(char *s)
- puts函数把字符串s和一个尾随的换行符写入到stdout(屏幕)
int puts (const char *s)
- 程序读取一整行直到该行结束
gets()&puts()函数的练习
#include <stdio.h>
int main( )
{
char str[100]; //字符数组
printf( "输入字符串 :");
gets( str );
printf( "\n你刚才输入的字符串是: ");
puts( str );
getchar();
return 0;
}
scanf()&printf()函数
- scanf( )函数从标准输入流stdin(键盘)读取输入,并根据提供的format来浏览输入
int scanf(const char*format,……)
- printf( )函数把输入写入到标准输出流stdout(屏幕),并根据提供的格式产生输出
int printf(const char *format,……)
输入一个文本并按下回车键时,程序读取输入,但是要求格式要匹配
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main( ) {
char str[100];
int i;
printf( "Enter a value :");
scanf("%s %d", str, &i);
printf( "\nYou entered: %s %d ", str, i);
printf("\n");
getchar();
getchar();
return 0;
}
C文件读写
打开文件
使用fopen()函数来创建一个新的文件或者打开一个已有的文件
FILE *fopen(const char * filename, const char * mode)
- filename是字符串,用来命名文件,访问模式mode的值是下列值
- 如果处理的是二进制文件,则在后面加上b
- rb、wb、ab、r+b、w+b、a+b、rb+、wb+、ab+
//创建一个文件指针
//FILE为库变量
FILE *fp = NULL;
//打开该文件
fp = fopen("D:/test100.txt", "w+"); //w+ 模式是 文件会被截断为零长度
fp = fopen("d:/test100.txt", "a+"); //a+ 模式是 文件不会被截断为零长度
关闭文件
使用fclose()函数
- 如果成功关闭文件,fclose()函数返回零
- 如果关闭文件时发生错误,函数返回EOF
- 这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF是一个定义在头文件stdio.h中的常量
//关闭文件!!!, 如果不关闭 ,我们的内容没有保存到文件中!!
fclose(fp);
C语言写入文件
写入文件的函数
- fputc函数
int putc(int c,FILE *fp)
fputc函数把参数c的字符值写入到fp所指向的输出流中,如果写入成功,它会返回写入的字符,如果发生错误,则会返回EOF。
- fputs函数
int puts (const char*s,FILE *fp);
fputs()函数把字符串s写入到fp所指向的输出流中。如果写入成功,则返回一个非负值,如果发生错误,则返回EOF.同样的功能还可以用
- fprint函数
int fprintf(FILE *fp,const char* format,……)
可以将一个字符串写入到文件中
写入文件的练习
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main() {
//创建一个文件指针
//FILE为库变量
FILE *fp = NULL;
char name = 'c';
//打开该文件
fp = fopen("D:/test100.txt", "w+"); //w+ 模式是 文件会被截断为零长度
//fp = fopen("d:/test100.txt", "a+"); //a+ 模式是 文件不会被截断为零长度
//将内容写入到文件中
fprintf(fp, "你好 北京~~\n");
fputs("你好,上海~~\n", fp);
fputc(name, fp);
fputs("\n", fp);
//关闭文件!!!, 如果不关闭 ,我们的内容没有保存到文件中!!
fclose(fp);
printf("创建, 写入信息完成");
getchar();
}
控制台输出
文件内容
注意事项:
- 如果将打开文件的方式改为“a+”,则当运行两次程序之后,文件的内容会变成
- 输入单个字符串,也可使用
fputc('c',fp);
C语言读取文件
读取文件的函数
- fgetc()函数:读取单个字符的函数
fgetc()函数从fp所指向的输入文件中要读取一个字符。返回值是读取的字符。如果发生错误则返回EOF
int fgetc(FILE *fp);
- fgets()函数:从流中读取一个字符串
①函数fgets()从fp所指向的输入流中读取n-1个字符。它会把读取的字符串复制到缓冲区buf,并在最后追加一个null字符来终止字符串。
②如果这个函数在读取最后一个字符之前就遇到一个换行符‘\n’或文件的末尾EOF。则只会返回读取到的字符,包括换行符。
char *fgets (char *buf,int n, FILE *fp);
- fscanf()函数:从流中读取一个字符串
int fscanf(FILE *fp,const char *format,……);
函数从文件中读取一个字符串,但是在遇到第一个空格字符时,它会停止读取
读取文件的练习
- 从fp所指向的文件读取一行,到buff中
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main() {
//创建一个文件指针
FILE *fp = NULL;
//定义一个缓冲区
char buff[1024];
char ch;
//打开文件
fp = fopen("d:/test200.txt", "r");
//方法1
fscanf(fp, "%s", buff);//从fp指向的文件读取一行,到buff里
//输出
printf("%s\n", buff);
//关闭文件
fclose(fp);
getchar();
}
- 读取单个字符
//方法二,读取单个字符
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
putchar(' ');
}
- 读取整个文件
//方法3 读取整个文件
//说明,循环读取fp指向的文件内容,如果读到NULL,就结束
while(fgets(buff, 1024, fp)!=NULL) {
printf("%s", buff);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83257.html