【C】文件基础

int main(){  
    FILE *fp=fopen("C://Users//wdh//Desktop//1.txt","r");  
    char c=0;  
    while((c=fgetc(fp))!=EOF){  
        if(c<' '||c>'~') c='#';  
        cout<<c;  
    }  
    return 0;  
}  
int main(){  
    FILE *fp=fopen("C://Users//wdh//Desktop//1.txt","r");  
    char ch[1024];  
    while(!feof(fp)){//逐行读取,直到文件结束  
        fgets(ch,sizeof(ch),fp);//读取sizeof(ch)-1个字符到ch中  
        //cout<<ch<<endl;//多一行空行  
        cout<<ch;  
    }  
    fclose(fp);  
    return 0;  
}  
int main(){  
    FILE *fp=fopen("C://Users//wdh//Desktop//1.txt","w");  
    char ch='a';  
    int n=fputc(ch,fp);//原文件被ch覆盖  
    cout<<n;//n=97--'a'  
    fclose(fp);  
    return 0;  
} 
int main(){  
    FILE *fp=fopen("C://Users//wdh//Desktop//1.txt","w");  
    char ch='a';  
    fputc(ch,fp);  
    fputc(ch,fp);  
    fputc(ch,fp);//写入三个a  
    fclose(fp);  
    return 0;  
}  
int main(){  
    FILE *fp=fopen("C://Users//wdh//Desktop//1.txt","w");  
    char ch[1024]="asdfghjkl";  
    char ch2[1024]="qwertyuiop";  
    fputs(ch,fp);  
    fputs("\n",fp);//换行  
    fputs(ch2,fp);  
    fputs(ch,fp);  
    fclose(fp);  
    return 0;  
}  
int main(){  
    FILE *fp=fopen("C://Users//wdh//Desktop//1.txt","a");  
    //在文件尾追加  
    char ch[1024]="asdfghjkl";  
    char ch2[1024]="qwertyuiop";  
    fputs(ch,fp);  
    fputs("\n",fp);//换行  
    fputs(ch2,fp);  
    fputs(ch,fp);  
    fclose(fp);  
    return 0;  
}
//将一个文件fp1的内容复制到另一个文件fp2中去。  
int main(){  
    FILE *fp1=fopen("C://Users//wdh//Desktop//1.txt","r");  
    FILE *fp2=fopen("C://Users//wdh//Desktop//2.txt","w");  
    char c;  
    while((c=fgetc(fp1))!=EOF){  
        fputc(c,fp2);//逐字写入  
    }  
    fclose(fp1);  
    fclose(fp2);  
    return 0;  
}  
//按十进制和字符显示文件代码,若遇不可示字符就用井号"#"字符代替之。  
int main(){  
    FILE *fp1=fopen("C://Users//wdh//Desktop//1.txt","r");  
    char c;  
    while((c=fgetc(fp1))!=EOF){  
        if(c<' '||c>'~') c='#';  
        printf("%-4d %c\n",c,c);//左对齐  
    }  
    fclose(fp1);  
    return 0;  
}
//往文件中写格式化数据  
int main(){  
    FILE *fp1=fopen("C://Users//wdh//Desktop//1.txt","w");  
    char name[20];  
    int age,grade,weight;  
    //fscanf(stdin,"%s %d %d",name,&age,&grade);//在屏幕上输入  
    while(scanf("%s",name)!=EOF){  
        scanf("%d %d %d",&age,&grade,&weight);  
        getchar();  
        fprintf(fp1,"%s||%4d||%4d||%4d***\n",name,age,grade,weight);  
        //按照格式写入文件  
        fprintf(stdout,"%s||%4d||%4d||%4d***\n",name,age,grade,weight);  
        //格式化输出到屏幕  
    }  
    fclose(fp1);  
    return 0;  
}

这里写图片描述

//以二进制形式读取文件中的数据  
//求文件大小:读取文件到内存,然后跳转到文件末尾,查看跳转的长度  
int main(){  
    FILE *fp1=fopen("C://Users//wdh//Desktop//1.txt","rb");//打开二进制文件  
    fseek(fp1,0,SEEK_END);//随机定位,跳到基于ESSK_END的位移0处——文件结尾  
    int size=ftell(fp1);//取得文件当前位置,相较于文件开头  
    cout<<size<<endl;  
    rewind(fp1);//跳回开头  
    char *buf;  
    buf=(char*)malloc(sizeof(char)*size);  
    int n=fread(buf,1,size,fp1);//存入buf,每个数据块1个字节,一共读size个数据块  
    cout<<buf;  
    fclose(fp1);  
    return 0;  
}//但是在vs08中buf输出仍有乱码,dev中正确  
//以二进制形式写数据到文件中去  
int main(){  
    FILE *fp1=fopen("C://Users//wdh//Desktop//1.txt","wb");//打开二进制文件  
    char buf[20]="hello world!!!";  
    int n=fwrite(buf,sizeof(buf),1,fp1);//每个数据块大小:sizeof(buf),一共1个数据块  
    cout<<n;//n是写成功的数据块数  
    return 0;  
}  

参考:C语言文件操作详解

猜你喜欢

转载自blog.csdn.net/li_jiaqian/article/details/79506565
今日推荐