文件处理函数如何使用?用法举例,C与MFC
C语言,有时候真不得不佩它,照理说,文件处理函数是没有什么好讲的,但对于很多C入门的人来说,似乎也是值得静心品味一番的。
C中的文件处理函数并不很多,而常用的,似乎更少。
函数不难,但并不代表文件处理也不难。似乎又要有点跑题了,我总是喜欢跑题。上几天做梦,梦到我掉到月球上去啦……
对文件的操作,无非就是打开、读写、调整读写偏移指针以及关闭,似乎么什可说的,也许事实也的确如此。还是让我们来看一段经典代码吧,这代码可是我自己写的。
FILE* fp = fopen(”test.txt”, “r”); assert(fp); //打开文件,给一个断言,这是一种好习惯
fseek(fp, 0, SEEK_END); //把偏移指针指向文件的结尾
unsigned int nlen = ftell(fp); //返回当前的偏移指针,也就是返回刚刚设定的文尾位置
fseek(fp, 0, SEEK_SET); //把读写偏移指针指向文件的开头
char* const _psz = (char*)malloc(nlen + 1);
//申请一段堆内存,这里的_psz为什么要被const修饰呢?
unsigned int size = fread(_psz, sizeof(char), nlen, fp); //读出文件的内容
_psz[size] = ‘\0′; //注意,必须要在字符串的结尾处添加结束标志,否则,哼哼!
fclose(fp); //关闭文件
…… //东搞搞,西搞搞
free(_psz); //归还堆内存
实在是太简单了是吧?是的,我正这样认为呢。
在读文件的时候,有点东西还是要说说的。因为我们都听说过,文件有两种格式,一种是文本,一种是二进制。文本文件,当然,我们不想说什么了,但二进制文件的读写,却值得一提。二进制的文件这样打开:
FILE* fp = fopen(”test.exe”, “rb”); assert(fp);
当然,可执行文件只不过是二进制文件的一个代表,在使用读写标志的时候,我们需要”b”后缀,表明打开的是二进制的文件。其实,这不是关键,而正真关键的部分是对文件的读写,这份代码有点冗余,但不写又怕给人闹出强迫症。
fseek(fp, 0, SEEK_END); //获取文件大小
size_t nlen = ftell(fp);
fseek(fp, 0, SEEK_SET);
unsigned char* const _psz = (unsigned char*)malloc(nlen + 1);
//显然,申请的内存应该是BYTE格式
fread(_psz, sizeof(unsigned char), nlen, fp); //由于是二进制的文件,我们不必再对内存做处理
fclose(fp);
通常,这种用法不常见,而更多的对二进制文件的读写,是出现在socket上。比如,我们要从网上更
相关文档:
#include <stdio.h>
#include <string.h>
int
main(void)
{
char str[] =
"3BVPSq4xF.K?=u#,"
"G'K<MrDnRr7gH%#,"
"XKf<f%G`w^=?C<#,"
"HgU_AnNR?*PDQU#,"
......
当Linux内核在体系结构差异较大的平台之间移植时,会产生与数据类型相关的问题。
.在编译内核时使用 -Wall -W strict-prototypes 选项, 可以避免很多错误的发生
.内核使用的基本数据类型主要有:
int 标准C语言整数类型
&n ......
与 &: 任何位用&运算与0结合结果为0,与1结合结果为其本身;
或 | : 任何位用|运算与0结合结果为其本身,与1结合结果为1;
异或 ^ : 任何位用^运算与0结合结果为其本身,与1结合则取反; ......
哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。
' J$ |0 ?! p% w" t5 D6 D: c9 |0 B
一家之言,欢迎拍砖哈。
1、可以考虑先学习C.
/ U$ X+ X/ P; Y ......
这段源码能在linux下运行!!! 能识别小数
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
/*#define NULL 0*/
/* 自定义变量 */
#define&n ......