C语言——文件读写问题

关于读写中用到的几个函数,菜鸟教程有详细介绍 看这里看这里
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文件中

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值