一次读写一块字符(fread fwrite)

来源:互联网 发布:电脑网络id按钮在哪 编辑:程序博客网 时间:2024/05/16 13:45

一次读写一块字符(fread fwrite) 文本操作:

#include "stdafx.h"#if 0----int fwrite(void *buffer, int num_bytes, int count, FILE *fp)//把buffer指向的数据写入fp指向的文件中//fread(起始地址,最小单元,读取个数,文件句柄)>0----int fread(void *buffer, int num_bytes, int count, FILE *fp)//把fp 指向的文件中的数据读到 buffer 中buffer : 指向要输入/输出数据存储区的首地址的指针num_bytes : 一次要读/写字节的大小count : 要读/写几个num_bytes大小的数据(或者看成读/写几次)fp : 要读/写的文件指针成功,返回读/写的字段数(有几个num_bytes大小的数据(相当于Count));出错或文件结束,返回 0。返回值返回的为 相应大小的个数,不够相应大小则返回0应注意返回值的陷阱 以最小的单元格式进行读, 或是写入的最小单元进行读。将 num_bytes 的值设置小些 count 的值设置大些fread((void*)buf, 1, 1024, fp)fread fwrite 对特殊字符 特殊格式(\n \r \t等)不敏感 把它们只当作普通字符 不会发生中断等情况#endifint _tmain(int argc, _TCHAR* argv[]){//读取文本FILE* fp = fopen("bin.txt", "rb");//bin.txt:aaaaaaaaaabbbbbbbbbbccccccccccddddddddddif (NULL == fp)return -1;char buf[1024];//int n;//while ((n=fread((void*)buf, 1, 3, fp)) > 0)//{//printf("n=%d  %c%c%c\n",n, buf[0], buf[1], buf[2]);////此时会多打印俩个d,因为每次fread后相当于将读取的值覆盖到buf中////最后一次只读到了一个d,但是只覆盖了buf中的buf[0],而buf[1]和buf[2]////还是上一次fread之后的值d,所以会多打印俩个d//}int n;while ((n = fread((void*)buf, 1, 3, fp)) > 0){printf("n=%d\t", n);for (int i = 0; i < n; i++){printf("%c\t", buf[i]);//相当于读到几个数据就打印几个}printf("\n");}return 0;}

一次读写一块字符(fread fwrite) 二进制操作:

#include "stdafx.h"#if 0前面所学的所有的文件接口函数,要么以‘\0’,表示输入结束,要么以‘\n’EOF(0xFF)表示读取结束。‘\0’‘\n’等都是文本文件的重要标识,而二进制文件,则往往以块的形式,写入或读出#endifint _tmain(int argc, _TCHAR* argv[]){int a[10] = { 0xFF, '\0', 0x0D, '\n', 11, 22, 33, 44, 55, 66 };FILE * fp = fopen("bin.txt", "wb+");fwrite((void*)a, sizeof(a), 1, fp);fwrite((void*)a, sizeof(a), 1, fp);fwrite((void*)a, sizeof(a), 1, fp);fwrite((void*)a, sizeof(a), 1, fp);fwrite((void*)a, sizeof(a), 1, fp);fwrite((void*)a, sizeof(a), 1, fp);fwrite((void*)a, sizeof(a), 1, fp);rewind(fp);int buf[10];while (fread((void*)buf, sizeof(int[10]), 1, fp)>0){for (int i = 0; i<10; i++){printf("%x==", buf[i]);}printf("\n");}return 0;}


原创粉丝点击