关于读写中用到的几个函数,菜鸟教程有详细介绍 看这里看这里
BUT 在这里我还是进行了一下自我总结以及实践
首先,打开文件
FILE *fopen( const char * filename, const char * mode );
然后,在文件中写入
fprintf(FILE *fp,const char *format, ...)
或者是
fputs( const char *s, FILE *fp );
你也可以就傲娇的写一个字符,那你就用它↓
fputc( int c, FILE *fp );
接下来,读它!
char *fgets( char *buf, int n, FILE *fp );
这个函数在读取最后一个字符之前就遇到一个换行符 ‘\n’ 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。简单说,就是你中间就算写空格和换行,大人我也要努力读到文件最后!
再看下面一个:
fscanf(FILE *fp, const char *format, ...)
这个函数来从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。就是说,只要我看见了空格或者换行我就休息,不读了~~~
来来来,刚才您傲娇的那一个字符,咱们也读一下呗~
fgetc( FILE * fp );
最后,关闭文件!
fclose( FILE *fp );
上代码~~
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
//关于路径,若temp1就在D盘下,那么路径为:D:/temp1.txt
//但是,如果你是存在了D盘某个文件下,那么路径为:D:/文件名称/temp1.txt
//嵌套了几层文件,就写几个"/文件名"
int main()
{
FILE*fp=NULL;
char buff[255];
fp=fopen("D:/Data_Structure/temp1.txt","w+");
fprintf(fp,"This temp1 made by Iron&chen\n");
fputs("This is testing for fputs\n ",fp);
fclose(fp); //这里要是不关上文件,就会发现,你的文件没保存啊,兄弟~~~
fp=fopen("D:/Data_Structure/temp1.txt","r");
fscanf(fp, "%s", buff);
printf("1: %s\n", buff );
fgets(buff,255,(FILE*)fp);
printf("2:%s\n",buff);
fgets(buff,255,(FILE*)fp);
printf("3:%s\n",buff);
return 0;
}
运行结果如下:
再来看一个问题:
是的,w+把a+写的都给删了,重写了,但是a+只是在后面接着写而已。
知识点补充:把从文件中读取的字符串写入到新的文件中
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main() {
FILE *fp, *fp1;
char str[N + 1];
//判断文件是否打开失败
if ( (fp = fopen("d:\\input.txt", "rt")) == NULL ) {
puts("Fail to open file!");
exit(0);
}
fp1 = fopen("d:\\test.txt","a+");
//fscanf(fp, "%s", str);
fgets(str, N+1,(FILE*)fp);
fprintf(fp1, "新读入的字符串为:%s:\n", str);
//操作结束后关闭文件
fclose(fp);
fclose(fp1);
return 0;
}
从input.txt文件中读取字符串,并把它存入到新建文件newtest.txt文件中