文件操作:输入-输出

#include<stdio.h>

#include<stdlib.h>

#include<string.h>



//使用宏定义文件名,,注“”双引号(源自预编译对宏的“简单替换”)

#define FILE_NAME"/users/qianfeng/macro/date.txt"


//使用宏对打开模式,,注“”双引号(源自预编译对宏的“简单替换”,可参考博客:预处理编译-宏-define)

//fopen(char* address,char* ch_enable);

//{"r"(用于读)/"r+"(用于读写,从文件头开始)}当文件不存在报错

//{/"w"/"w+"(文件存在就截去)/“a”/"a+"(用于文件追加)}当文件不存在自动创建

#define OPEN_MODE"w+"


int main(){

    

    

   //fopen打开文件,//缓冲区有关联,

   //缓冲区是由操作系统OS位当前运行程序自动分配,有大小限制的

   //读缓冲/写缓冲

    FILE* fp =NULL;

    

   char str[512];

    

   //打开文件,参数为开始定义的宏

    fp = fopen(FILE_NAME,OPEN_MODE);

    

   //判断文件是否为空:

   if (fp==NULL) {

        perror("date.txt");

        exit(-1);

    }

   else printf("%p\n",fp);

    

   //向文件中写入数据“hello world”

   //如果上方的打开方式为读,则此处无法成功写入

    fprintf(fp,"helloxxwzorld\n");

    

   //读取数据:

   //光标置为0位,

    rewind(fp);

    

   //从第0个字符向后偏移6个字符;

   //最终光标应该偏移到第(0+6)字符的前面。

    fseek(fp,6,0);

    

   //查找目前光标位置:

   long position = ftell(fp);

    printf("position = %ld\n",position);

    

   //把数据写入str[]

    fscanf(fp,"%[^\n]",str);

    

   //读取str[]

    printf("%s\n",str);

    

   //在文件的真正结尾是”EOF“,在此之前还有个换行符”\n“

   //输入:scanf(),gets(),getchar

   //scanf();每次根据自己的类型从缓存区中去数据,不符合则不取,取值成功返回值为:1

   //否则为:0

    

   //输出:printf(),puts()

   char buffer[512] ="this is buffer";

    printf("fget = ");

    

   //fgets(<#char *restrict#>, <#int#>, <#FILE *#>),第一个参数:存储指针,

   //第二个参数:输入多少个字符串(包括结束标示“\0”),第三个参数:文件指针,(stdin表示键盘文件,从键盘录入数据);

   fgets(buffer, 10,stdin);

    

   puts(buffer);

   fputc(1, fp);

    

   //清理文件的缓冲区

   fflush(fp);

    

   //关闭文件

   fclose(fp);

    

   return 0;

   /*

     输出:

     0x7fff7df3c2a0

     position = 6

     xwzorld

     fget = fgdsfg

     fgdsfg

     

     Program ended with exit code: 0

     */

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值