c--文件读写--文本读写

#include <stdio.h>

int main()
{
    FILE *fp=fopen("ss.txt","r"); //打开文件并创建文件指针 
    //实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息 
    //在进行读写操作之前要先打开,使用完毕要关闭
    //在打开一个文件时,如果出错,fopen将返回一个空指针值NULL
    /*
    r(read): 只读
    r+   :   打开读写,从文件头开始 
    w(write): 只写,如果存在则清空,如果不存在则新建 
    w+    : 打开可读/写文件,如果存在则清空,如果不存在则新建
    a(append): 追加,以附加方式打开只写文件,如果不存在则新建,如果文件存在则文件尾开始--只写
   a+ :
以附加方式打开可写/读文件,如果不存在则新建,如果文件存在则文件尾开始
t(text): 文本文件,可省略不写 
b(banary): 二进制文件
x : 只新建,如果文件已经存在则不能打开
“rt”      只读打开一个文本文件,只允许读数据
“wt”      只写打开或建立一个文本文件,只允许写数据
“at”      追加打开一个文本文件,并在文件末尾写数据
“rb”      只读打开一个二进制文件,只允许读数据
“wb”       只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+”      读写打开一个文本文件,允许读和写
“wt+”      读写打开或建立一个文本文件,允许读写
“at+”      读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+”      读写打开一个二进制文件,允许读和写
“wb+”      读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
*/

if(fp){ int num,num1; fscanf(fp,"%d",&num); //从文件中读取格式化输入

//从文件中读取一个数,放到num变量中

//移动文件指针
printf(
"%d\n",num);

int n=fclose(fp) ;//关闭文件

//正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生
}

else{
printf(
"%s\n","文件没有打开"); }

return 0; }

fscanf说明:

格式:int fscanf(FILE *stream, const char *format, ...)  

返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF

 参数1:FILE *stream   文件指针

参数2:const char *format

格式:%[*][width][modifiers]type]

*       : 这是一个可选的星号,表示数据是从流 stream 中读取的,但是可以被忽视

width:     读取的最大字符数

modifiers :为对应的附加参数所指向的数据指定一个不同于整型(针对 d、i 和 n)、无符号整型(针对 o、u 和 x)或浮点型(针对 e、f 和 g)的大小: h :短整型(针对 d、i 和 n),或无符号短整型(针对 o、u 和 x) l :长整型(针对 d、i 和 n),或无符号长整型(针对 o、u 和 x),或双精度型(针对 e、f 和 g) L :长双精度型(针对 e、f 和 g)

type:

 

        int c=fgetc(fp);//读取一个字符(一个无符号字符),并把位置指针往前移动
        //返回读取的字符ASCii码,如果到达文件末尾或发生读错误,则返回 EOF
        printf("%c\n",c);

 

 

#include <stdio.h>

int main()
{
    FILE *fp=fopen("ss.txt","w+"); 
        
    if(fp){
        
        fprintf(fp, "%s %s %s %d", "We", "are", "中国人", 1968);//写文件 
                
        
        int n=fclose(fp) ;
        
    }
    else{
        printf("%s\n","文件没有打开");
    }
    
    
    return 0;
}

 

fprintf说明:格式   int fprintf(FILE *stream, const char *format, ...)

把内容写到文件

看  https://www.runoob.com/cprogramming/c-function-fprintf.html  

 

 

 

#include <stdio.h>

int main(void){
    int a[]={10,20,30,40,50,60,70,80};
    FILE *fp=fopen("ss.txt","w+"); 
    int len=sizeof(a)/sizeof(a[0]);
    if (fp){
        
        unsigned long num=fwrite(a, sizeof(a[0]), len, fp);//向流steam写数据 
        /*
        参数1:要写入的数组指针
        参数2:要被写入的每个元素的大小,以字节为单位-unsigned long 
        参数3:元素的个数-unsigned long 
        参数4:文件指针 
        返回值:失败返回-1;成功返回写入的数据个数; 
        */
        printf("写了%d个数据\n",num);
        //int n=fclose(fp) ;
                
    }
    else{
        printf("文件打开失败--写\n");
    }
    
    
    int b[8];
    rewind(fp) ;//设置读写指针到文件的开头
        unsigned long num= fread(b, sizeof(int), 8, fp);//读取数据 
        /*
        参数1:用来保存数据的char*;注意大小要大于等于读取的字节数
        参数2:要读取的每个元素的大小,以字节为单位 
        参数3:元素的个数
         参数4:文件指针
         返回值:失败返回-1;成功返回读取的数据个数 
        */
        
        for (int i=0;i<8;i++){
            printf("b[%d]=%d\n",i,b[i]);
        }
        printf("读了%d个数据\n",num);
        
         
    
    
    int n=fclose(fp) ;
    
}

 

 

 

 

 

 

 

 

posted @ 2020-07-26 10:56  天子骄龙  阅读(900)  评论(0编辑  收藏  举报