C语言二进制文件读写程序实现(基础)
来源:互联网 发布:本地网络电缆被拔出 编辑:程序博客网 时间:2024/05/17 08:15
由于对文件操作比生疏,这里拿一个最近的一个程序来学习和备忘。
/*** 该文件实现将数字文本保存为二进制文件。* 这里保存的二进制格式为 unsigned short int* 这里主要用到fwrite,fread*/#include <stdio.h>#include <string.h>#define NAMELEN 256#define isDigitChar(ch) ((ch)>='0' && ((ch)<='9'))#define fprintData(file, val) fprintf((file), "%hu", (val))//%hu is for unsigned short int; %hd is for short inttypedef unsigned short int DataType;const int DATATYPESIZE = sizeof(DataType);void autoOutputFilename(char* outputFile, const char* inputFile);//auto names outputFileint transCharFileToIntFile(const char* in_filename, char* out_filename);int readFromBinaryFile(const char* filename);int main(int argc, char** argv){char in_filename[NAMELEN];char out_filename[NAMELEN];while(gets(in_filename)){if(transCharFileToIntFile(in_filename, out_filename)){printf("Unsuccessful file operator!\n");}else{printf("Success!\n");readFromBinaryFile(out_filename);}/**/}return 0;}//return -1 means unsucessful, 0 sucessful.int transCharFileToIntFile(const char* in_filename, char* out_filename){ FILE *f_input = NULL, *f_output = NULL; char ch = 0, preChar = 0;DataType val = 0;//file opreatorf_input = fopen(in_filename, "r");if(NULL == f_input) return -1;autoOutputFilename(out_filename, in_filename);f_output = fopen(out_filename, "wb"); // b means binary fileif(NULL == f_output) {fclose(f_input); return -1;}//get outputwhile((ch = fgetc(f_input))!=EOF){if(isDigitChar(ch)){val = val*10 + (ch-'0');}else{if(isDigitChar(preChar)){fwrite(&val, DATATYPESIZE, 1, f_output);val = 0;}}preChar = ch;}if(isDigitChar(preChar)){fwrite(&val, DATATYPESIZE, 1, f_output);//size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );}//file closefclose(f_input);fclose(f_output);return 0;}int readFromBinaryFile(const char* filename){DataType val;FILE* fp = fopen(filename, "rb");if(NULL == fp){return -1;}//Read block of data from stream //size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );while(fread(&val, sizeof(DataType), 1, fp) == 1){//freadis fprintf(stdout, "%hu\n", val);}fclose(fp);return 0;}void autoOutputFilename(char* out_name, const char* in_name){int i = 0, flag = 0;strcpy(out_name, in_name);strcat(out_name, ".bit16");}
- C语言二进制文件读写程序实现(基础)
- C语言二进制文件读写程序实现(基础)
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写
- C语言实现二进制文件读写(转载)
- C语言二进制文件读写
- C语言读写二进制文件
- C语言读写二进制文件(float)
- Match和Pattern类
- c#实现RSA加密解密
- MFC怎样编写后台运行的程序 (这个值得一看)
- 多点触摸 终于有了初步成果
- 如何在JSP页面中通过一个按钮,在对话框中选择一个目录而不是选择一个文件;input type=file只能选择一个文件,我想选择一个目录;做不出来项目经理要扣奖金的...............
- C语言二进制文件读写程序实现(基础)
- oracle 游标简单的总结
- 改造Lua的debug.traceback(),让其显示栈上所有的局部变量
- Struts2 <s:property /> 标签用法
- Flex 预载界面美化
- 自己的问题记录
- android控件与常用控件
- 辗转相除法求最大公约数的原理
- eclipse快捷键大全