类型转换
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef char BYTE; //1byte
- void main()
- {
- int i, j; /* 定义两个整型变量 */
- FILE *fpBin, *fpTxt; /* 定义两个文件型指针变量 */
- BYTE *data = (BYTE *)malloc(4); /* 定义字符指针,申请了一个指针,指向的内存为4字节,每个字符仍是占一个字节
- * 对应的用完需要释放,释放需要用到free(data)
- * 相当于char data[4];
- */
- if(NULL == (fpBin = fopen(".//sample", "rb"))) /* 判断用fopen打开的文件流是否为空,fpopen("路径及所要打开的文件名","打开方式")
- * 在此为用二进制方式打开sample文件,并把读到地结果放到bpBin。
- */
- {
- printf("二进制文件打开失败!/n"); /* 如果文件为空无法读取,或者路径出错则弹出出错提示 */
- return;
- }
- if(NULL == (fpTxt = fopen(".//sample.txt", "w"))) /* 语句格式同上。意义:写入sample.txt数据,如果没有这个文件则会重新建立一个。*/
- {
- printf("文本文件打开失败!/n"); /* 如果文件为空无法写入,或者路径出错则弹出出错提示 */
- return;
- }
- for(i=0; i<400; i++) /* 控制外面的400行循环 */
- {
- for(j=0; j<640; j++) /* 内重循环640行 */
- {
- memset(data, 0, 4); /* *data进行初始化 */
- fread(data, 1, 1, fpBin); /* 把fpBin里面的数据放到data里面
- * 第一个参数是指要把读到的文件存放的地方
- * 第二个是指这种类型在内存中占多少字节,如果不知道可以写sizeof(类型名)
- * 第三个是指一次读取的字节数
- * 第四个是指从谁读取
- */
- itoa(*data, data, 10); /* 把*data里面的数据转换为十进制放入到data里面
- * 第一个参数是要转换的数据,第二个参数要是存放数据的地址,第三个是要进行转换的进制
- */
- fwrite(data, 1, 4, fpTxt); /* 把读到的data里面的数据写入到fpTxt里面
- *
- * 第一个参数是要写的数据地址
- * 第二个参数是要读取的字节数,也就是每次要写的字节数
- * 第三个是要读字节所占的内存空间的大小,也就是每次要对字节进行写入的次数
- * 第四个是要把读出来的数据写到的地方
- * 第二个参数和第三个参数的乘积就是要写入的位数
- */
- }
- *data = '/n'; /* 把数据*data后面补一个换行符也就是第640列的时候换到下一行 */
- fwrite(data, 1, 1, fpTxt); /* 换回车换行符写到fpTxt里面 */
- }
- fclose(fpBin); /* 关闭文件fpBin */
- fclose(fpTxt); /* 关闭文件fpTxt */
- free(data); /* 释放data*/
- }