1、常量指针和指针常量的区别
- 常量指针(const char *):指向常量的指针。要点:const在*的前面。这种指向常量的指针不能够修改指向内存的内容,但是可以修改指向的内存地址。
eg:
char ch[4]="kun"; const char *ptr=ch; 针对上面的2条语句。如果在后面对ptr变量进行如下操作: *ptr='J'; ptr="Jia"; |
在我们写程序的时候。如果利用常量指针来传递参数时候,就不用担心因为形参数据的改变而影响实参值得改变,从而保证了数据的一致性。
- 指针常量(char * const):其表示指针本身是个常量。const 在*后,但是在所定义指针名字的前面,表明了一个指针常量。必须在其定义的同时赋值。
Eg:
char * const ptr=ch; 此时对于ptr不能够修改,但是其值可以进行修改。 *ptr='J'; ptr="Jia"; |
2、C语言对文件的操作:
在C语言中对文件的操作是通过FIFE结构体进行的。操作步骤:
-
利用fopen()打开文件;
-
文件的写入:
fwrite();
C 语言对文件的操作使用了缓冲文件系统(标准文件系统)。系统自动地内存区每正使用文件开辟缓冲区从磁盘向内存读入数据时则次从磁盘文件些数据输入内存缓冲区(充满缓冲区)再从缓冲区逐地数据送给接收变量;向磁盘文件输出数据时先数据送内存缓冲区装满缓冲区才起送磁盘去用缓冲区次读入批数据或输出批数据而执行次输入或输出函数去访问次磁盘样做目减少对磁盘实际读写次数因每次读写都要移动磁头并寻找磁道扇区花费定时间缓冲区大小由各具体C 版本确定般512 字节。
非缓冲文件系统由系统自动设置缓冲区而由用户自己根据需要设置。 -
文件的读取:
fread();
在文件读取的时候,对存放数据的缓冲区应该首先进行初始化为NULL。可以利用C中的menset函数将缓冲区的数据初始化为0。由于我们不知道数据的大小,可能会导致数据缓冲区容量较小。为了解决此问题我们可以使用ftell()函数来获取文件的长度。
ftell()返回的是文件指针的当前位置,然后用fseek()将文件指针移动到末尾,然后利用ftell函数获取文件的长度。
FILE *pFile = fopen("kun.txt","r"); char *buf;
fseek(pFile,0,SEEK_END);
int len = ftell(pFile);
buf = new char[len+1];
rewind(pFile);
//将文件指针移动到文件开始处,当然也可以使用fseek()函数 fread(buf,1,len,pFile);
buf[len]=0;
fclose(pFile);
-
文件的关闭
flose()函数
此时系统将缓冲区的数据写入文件。当在程序中调用此函数后,再次对文件的访问需要从新对文件打开。 -
一些其他的函数
1)fflush():将缓冲区的数据写入文件;
2)文件指针定位:该指针会根据我们对文件的操作而进行改变,始终指向我们要写入的下一个位置。如果希望在写入数据后,返回文件开始的位置处再写入数据,就可以利用fseek()函数。