Cè¯è¨ä¸å¯¹æ件è¿è¡æä½å¿
é¡»é¦å
æå¼æ件ï¼æå¼æ件主è¦æ¶åå°fopenå½æ°ãfopenå½æ°çåå为
FILE* fopen(const char *path,const char *mode)
å
¶ä¸path为æ件路å¾ï¼mode为æå¼æ¹å¼
1)对äºæ件路å¾ï¼åªé注æè¥æªæç¡®ç»åºç»å¯¹è·¯å¾ï¼åé»è®¤è¯¥æ件å¨å·¥ç¨çç®å½ä¸ãè¥éç»åºç»å¯¹è·¯å¾ï¼å注æ转ä¹å符'\'ï¼æ¯å¦ææ件test.txtåæ¾å¨Cçæ ¹ç®å½ä¸ï¼åæ件路å¾åæ°å¼åºä¸ºC:\\test.txtã
2)对äºmodeï¼ä¸»è¦ç±rï¼wï¼aï¼+ï¼bï¼tå
个å符ç»åèæã
r:åªè¯»æ¹å¼ï¼æ件å¿
é¡»åå¨
w:åªåæ¹å¼ï¼è¥æ件åå¨ï¼ååæå
容ä¼è¢«æ¸
é¤ï¼è¥æ件ä¸åå¨ï¼åä¼å»ºç«æ件
a:追å æ¹å¼æå¼åªåæ件ï¼åªå
许è¿è¡åæä½ï¼è¥æ件åå¨ï¼åæ·»å çå
容æ¾å¨æ件æ«å°¾ï¼è¥ä¸åå¨ï¼å建ç«æ件
+:å¯è¯»å¯å
b:以äºè¿å¶æ¹å¼æå¼æ件
t:以ææ¬æ¹å¼æå¼æ件(é»è®¤æ¹å¼ä¸ä»¥ææ¬æ¹å¼æå¼æ件)
ä¸é¢æ¯å¸¸è§çç»å:
r: 以åªè¯»çæ¹å¼æå¼æ件ï¼åªå
许读ï¼æ¤æ件å¿
é¡»åå¨ï¼å¦åè¿åNULL,æå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨
r+: 以å¯è¯»å¯åçæ¹å¼æå¼æ件ï¼å
许读åï¼æ¤æ件å¿
é¡»åå¨ï¼å¦åè¿åNULLï¼æå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨
rb+: 以å¯è¯»å¯åãäºè¿å¶æ¹å¼æå¼æ件ï¼å
许读åï¼æ¤æ件å¿
é¡»åå¨ï¼å¦åè¿åNULLï¼æå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨
rt+: 以å¯è¯»å¯åãææ¬æ¹å¼æå¼æ件ï¼å
许读åï¼æ¤æ件å¿
é¡»åå¨ï¼å¦åè¿åNULLï¼æå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨
w: 以åªåçæ¹å¼æå¼æ件ï¼åªå
许åï¼è¥æ件åå¨ï¼æ件ä¸åæå
容ä¼è¢«æ¸
é¤ï¼è¥æ件ä¸åå¨ï¼åå建æ件ï¼æå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨
w+: 以读åçæ¹å¼æå¼æ件ï¼å
许读åï¼è¥æ件åå¨ï¼æ件ä¸åæå
容ä¼è¢«æ¸
é¤ï¼è¥æ件ä¸åå¨ï¼åå建æ件ï¼æå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨
a: 以追å ãåªåçæ¹å¼æå¼æ件ï¼åªå
许åãè¥æ件åå¨ï¼å追å çå
容添å å¨æ件æ«å°¾ï¼è¥æ件ä¸åå¨ï¼åå建æ件ãæå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨(注æå¾å¤ä¹¦ä¸æèµæä¸è®²è¿°è¿½å æ¹å¼æå¼æååä½ç½®æéæåæ件æ«å°¾æ¯é误ç)
a+: 以追å ãå¯è¯»åçæ¹å¼æå¼æ件ï¼å
许读åãè¥è¿è¡è¯»æä½ï¼åä»å¤´å¼å§è¯»ï¼è¥è¿è¡åæä½ï¼åå°å
容添å å¨æ«å°¾ãè¥æ件ä¸åå¨ï¼åå建æ件ãæå¼æååè¿åæ件æéï¼ä½ç½®æéæåæ件头é¨ã
å
¶ä»æ¹å¼ç±»ä¼¼ã
ä¸é¢è®¨è®ºä¸ä¸ä»¥äºè¿å¶æ¹å¼åææ¬æ¹å¼æå¼æ件æä»ä¹åºå«ã
å
¶å®è¿ä¸¤ç§æ¹å¼æå¼æ件并没æ太大çåºå«ï¼ä»
ä»
åªæä¸ç¹åºå«å°±æ¯å¨å¤çæäºç¹æ®å符çæ¶åã
以ææ¬æ¹å¼æå¼æ件ï¼è¥å°æ°æ®åå
¥æ件ï¼å¦æéå°æ¢è¡ç¬¦'\n'(ASII å¼ä¸º10ï¼0A)ï¼åä¼è½¬æ¢ä¸ºå车âæ¢è¡'\r\n'(ASIIå¼ä¸º13ï¼10ï¼0D0A)åå
¥å°æ件ä¸ï¼åæ ·è¯»åçæ¶åï¼è¥éå°å车âæ¢è¡ï¼å³è¿ç»çASIIå¼13ï¼10ï¼åèªå¨è½¬æ¢ä¸ºæ¢è¡ç¬¦ã
è以äºè¿å¶æ¹å¼æå¼æ件æ¶ï¼ä¸ä¼è¿è¡è¿æ ·çå¤çã
è¿æå¦æ以ææ¬æ¹å¼æå¼æ件æ¶ï¼è¥è¯»åå°ASCIIç 为26(^Z)çå符ï¼ååæ¢å¯¹æ件ç读åï¼ä¼é»è®¤ä¸ºæ件已ç»æï¼è以äºè¿å¶æ¹å¼è¯»åæ¶ä¸ä¼åçè¿æ ·çæ
åµãç±äºæ£å¸¸æ
åµä¸æ们æå¨ç¼è¾å®æçæ件æ¯ä¸å¯è½åºç°ASCIIç 为26çå符ï¼æ以å¯ä»¥ç¨feofå½æ°å»æ£æµæ件æ¯å¦ç»æã以ä¸æè¿°ç两ç¹åºå«åªå¨windowsä¸åå¨ï¼å¨unixä¸æ²¡æåºå«ã
注æ:1)å¨ä»¥è¿½å æ¹å¼æå¼æ件æ¶ï¼ä½ç½®æéæåæ件çé¦é¨ã
å¨è¿éåºåä¸ä¸ä½ç½®æéåæ件æéï¼
æ件æéï¼æååå¨æ件信æ¯çä¸ä¸ªç»æä½çæé
ä½ç½®æéï¼å¯¹æ件è¿è¡è¯»åæä½æ¶ç§»å¨çæé
å¨å¤´æ件<stdio.h>ä¸åå¨ä¸ä¸ªç»æä½_iobufï¼å¨VC6.0ä¸éä¸FILEï¼ç¶åF12ï¼åå¯ä»¥çå°_iobufçå
·ä½å®ä¹ï¼
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
æ¯å¦ç¨FILE *fpå®ä¹äºä¸ä¸ªæ件æéï¼å¹¶æåæå¼ä¸ä¸ªæ件ä¹åï¼fpåªæ¯æå该ç»æä½ï¼èå¨å¯¹æ件è¿è¡è¯»åæä½æ¶ï¼fpçå¼å¹¶ä¸ä¼æ¹åï¼æ¹åçæ¯ç»æä½ä¸_ptrçå¼ï¼è¿ä¸ª_ptrå°±æ¯ä½ç½®æéã
2)以追å æ¹å¼æå¼æ¶ï¼è¥è¿è¡åæä½ï¼årewindå½æ°åfseekå½æ°ä¸ä¼èµ·å°ä½ç¨ï¼å 为以追å æ¹å¼æå¼æ¶è¿è¡åæä½çè¯ï¼ç³»ç»ä¼èªå¨å°ä½ç½®æé移å¨å°æ«å°¾ã
3)å½æ件æå¼ç¨äºæ´æ°æ¶ï¼å¯ä»¥éè¿æ件æé对æ件è¿è¡è¯»åæä½ï¼ä½æ¯å¦æ没æç»åºfseekæè
rewindçè¯ï¼è¯»æä½åé¢ä¸è½ç´æ¥è·åæä½ï¼å¦åä¼æ¯æ æçåæä½(ä½ç½®æéä¼ç§»å¨ï¼ä½æ¯éè¦åå
¥æ件çå
容ä¸ä¼è¢«åå
¥å°æ件å½ä¸)ï¼ä½æ¯åæä½åå¯ä»¥ç´æ¥è·è¯»æä½ã
1.æµè¯ç¨åº
å设工ç¨ç®å½ä¸å·²åå¨æ件test.txtï¼æ件ä¸å«æçå符串为"ABC"
/*æµè¯fopenå½æ°ä»¥è¿½å æ¹å¼æå¼æ件æ¶åå§æéçä½ç½® 2011.10.5*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n;
FILE *fp;
if((fp=fopen("test.txt","a"))==NULL)
{
printf("can not open file\n");
exit(0);
}
n=ftell(fp); //å¾å°æ¤æ¶fpæå¤ä½ç½®è·æ件é¦çå移åèæ°
printf("%d\n",n);
fputs("test",fp);
n=ftell(fp);
printf("%d\n",n);
fclose(fp);
return 0;
}
è¾åºç»æ为ï¼
0
7
Press any key to continue
ç±è¾åºç»æå¯ç¥ï¼åå§æå¼æ件åï¼æéæ¯ä½äºæ件é¦é¨ï¼åªæ¯å¨å¾æ件ä¸æ·»å å
容æ¶ï¼æå°æ件æé移å¨å°æ件æ«å°¾ã
2.æµè¯ç¨åº
/*æµè¯ä»¥äºè¿å¶æ¹å¼åææ¬æ¹å¼æå¼æ件çåºå« 2011.10.5*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char ch;
int i;
char s[]={'A','B','\n','C'};
FILE *fp1,*fp2;
if((fp1=fopen("test1.txt","wt"))==NULL)
{
printf("can not open file\n");
exit(0);
}
if((fp2=fopen("test2.txt","wb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
for(i=0;i<4;i++)
{
fputc(s[i],fp1); //以ææ¬æ¹å¼åæ件ä¸åå
¥æ°æ®
fputc(s[i],fp2); //以äºè¿å¶æ¹å¼åæ件ä¸åå
¥æ°æ®
}
fclose(fp1);
fclose(fp2);
if((fp1=fopen("test1.txt","rt"))==NULL)
{
printf("can not open file\n");
exit(0);
}
if((fp2=fopen("test1.txt","rb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
ch=fgetc(fp1);
while(!feof(fp1)) //以ææ¬æ¹å¼ä»æ件ä¸è¯»åæ°æ®
{
printf("%02X",ch);
ch=fgetc(fp1);
}
printf("\n");
ch=fgetc(fp2);
while(!feof(fp2)) //以äºè¿å¶æ¹å¼ä»æ件ä¸è¯»åæ°æ®
{
printf("%02X",ch);
ch=fgetc(fp2);
}
printf("\n");
fclose(fp1);
fclose(fp2);
return 0;
}
å¨åæ件ä¸åå®æ°æ®åï¼ç¨UltraEdit以äºè¿å¶æ¹å¼æå¼test1.txtåtest2.txtï¼çå°çç»æå¦ä¸ï¼
æ ¹æ®å¾å°çç»æå¯ç¥ï¼ä»¥ææ¬æ¹å¼åå
¥æ¶ï¼å¤åå
¥äºä¸ä¸ªå符0Dï¼å³'\r'ã
ç¨åºè¾åºç»æï¼
41420A43
41420D0A43
请æä»»æé®ç»§ç». . .
åå«ä»¥ææ¬æ¹å¼åäºè¿å¶æ¹å¼è¯»åtest1.txtæ¶ï¼è¾åºçå
容ä¸åã
å¯ç¥å¨ä»¥ææ¬æ¹å¼è¯»åæ¶ï¼å¯¹'\r\n'è¿è¡äºè½¬æ¢ï¼èäºè¿å¶æ¹å¼è¯»åæ¶å´æ²¡æè¿è¡è¿æ ·ç转æ¢ï¼è¦æ³¨æï¼windowsålinuxä¸çæ¢è¡ç¬¦æ¯ä¸ä¸æ ·çï¼å¨windowsä¸æ¢è¡ç¬¦æ¯\r\nï¼å³0X0Dã0X0Aï¼èå¨linuxä¸æ¢è¡ç¬¦æ¯\nï¼å³0X0Aã
3.æµè¯ç¨åº
/*æµè¯è¯»æä½åè½å¦ç´æ¥è·åæä½ 2011.10.5*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int ch;
int n;
FILE *fp;
if((fp=fopen("test.txt","r+"))==NULL)
{
printf("can not open file\n");
exit(0);
}
fseek(fp,1L,0); //å°fp移å¨å°è·æ件é¦1åèçä½ç½®
ch=fgetc(fp);
printf("%c\n",ch);
//rewind(fp);
fseek(fp,1L,0);
fputs("test",fp);
ch=fgetc(fp);
printf("%c\n",ch);
fclose(fp);
return 0;
}
å设工ç¨å·²ç»åå¨æ件test.txtï¼æ件ä¸å«æå符串"ABCDEFGH"ã
åä¸è¿°ç¨åºæ§è¡ç»æ为:
B
F
请æä»»æé®ç»§ç». . .æ件ä¸å
容为"AtestFGH"ã
ä¸é¢æ³ç»æç¸åï¼å æ¤è¯»åå°å符'B'åï¼åå°ä½ç½®æéç½®å°è·æ件é¦1åèå¤ï¼å³å符'B'å¤ï¼åå
¥"test"åï¼ä¼è¦çæ"BCDE",åå®åä½ç½®æéæåå符'F'ï¼å æ¤æ¤æ¶è¿è¡è¯»æä½ï¼å¾å°çç»ææ¯'F'ã
ä½æ¯å¦æå°fseek(fp,1L,0);è¿å¥æ³¨éæï¼åæ§è¡ç»æ为:
B
G
请æä»»æé®ç»§ç». . .
æ件ä¸çå
容为"ABCDEFGH"ã
注éæfseekä¸å¥åï¼è¯»åå®å符'B'åï¼ä½ç½®æéæåå符'C'ï¼åè¿è¡åæä½ï¼ä½ç½®æéä¼åå移å¨4个åèçä½ç½®ï¼æåå符'G'ï¼å æ¤ç¬¬äºæ¬¡è¯»åçè¾åºç»æ为'G'ãä½æ¯æ件ä¸çå
容没æ被æ¹åï¼ç¸å½äºè¿æ¬¡åæä½æ¯æ ææä½ã
温馨提示:内容为网友见解,仅供参考
c语言的文件操作
在C语言中,文件操作主要涉及以下几个方面:文件指针、文件打开、文件读写、文件关闭等。文件指针是C语言中进行文件操作的关键,它是一个指向文件的引用,通过这个引用,我们可以对文件进行各种操作。二、文件打开 在进行文件操作之前,需要先打开文件。C语言中提供了多种打开文件的函数,如`fopen`等。这些...
C语言:文件操作( fread 函数 )
C语言中的文件操作, fread函数是一个关键工具,用于从文件中读取数据到内存缓冲区。它的主要作用是读取指定数量的字节到指定的缓冲区,参数包括目标缓冲区(buffer)、每个基本单元的字节数(size)、需要读取的基本单元数量(count)、指向文件的指针(stream),返回实际读取的基本单元个数。在处理大文件...
C语言文件操作
C语言中的文件操作是编程中必不可少的一部分,它涉及到对数据在程序与文件之间的传输。在C语言中,通过标准库函数实现了输入流和输出流,使得程序能从键盘、文件或屏幕读取数据,也能将数据写入到这些地方。文件流,作为文件操作的核心,允许我们打开、读取和写入文件。当你打开一个文件流后,会在内存中...
C 语言对文件操作
在C语言编程中,文件操作是一项基本且重要的技能。这类任务包括创建、读取、写入、关闭以及管理文件。C标准库提供了一系列函数来执行这些操作,这些函数是标准C库的组成部分,并且普遍存在于各类C编译器中。在使用这些函数前,务必包含相应的 头文件。以下是一些关键的文件操作函数及其功能描述:具体示例:首...
C语言开发技巧---文件操作
文件在计算机存储数据中扮演关键角色,它集合相关数据,包含文本、图像、音频、视频等多种类型。C语言借助文件操作实现数据读取与写入,支持程序从外部文件获取数据、生成数据写入文件,实现数据持久化与共享。文件操作在现代程序设计中无处不在,极为常见。文件作用主要体现在:数据存储与持久化:用于保存程序...
c语言文件操作的问题~~
“文件指针”指向被移动的文件。“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。其表示方法如下表。起始点 表示符号 数字表示 ...
C语言文件操作 | 什么是文件以及文件的开关知识(1)
每次打开文件后,系统会返回一个FILE*指针,这个指针指向文件信息区,方便后续的读写操作。为了确保资源的合理使用,文件使用完毕后,应当进行关闭操作。C语言提供了fopen用于打开文件和fclose用于关闭文件的函数。下一次,我们深入学习C语言文件操作的高级部分——文件的顺序读写。持续关注,与图图一同探索C...
C语言文件操作问题,怎样替换文件中一行数据
C语言提供了文件操作,但是替换文件的某一行比较麻烦,下面一个参考方法,文件中存贮的内容如下所示: 通过使用下面的几个函数,fopen,fprintf,fscanf,fseek,ftell 。具体的函数函数原型如下所示: FILE*fopen(const char*filename,const char *mode); int fprintf(FILE*stream,const char *format,...) int fscanf(FI...
C语言文件操作
理解文件操作需要从系统和C语言两个角度进行。系统角度,文件打开后在内存中开辟文件信息区,存储文件信息。C语言角度,使用FILE类型结构体变量描述文件信息,FILE*指针维护。fopen函数打开文件,参数包括文件名和模式。模式选择如读写等。fopen返回文件指针或NULL。fclose关闭文件,参数为文件指针,返回值为关闭...
C语言,结构体和文件操作,bug求解,急!!好的追加
先指出几个问题请改正:代码结构有问题——打开文件的语句放在for循环里,那就会一次又一次地打开,要知道打开一个已经打开的文件是要出错的。文件路径中的反斜杠要双写。文件用完后应该立即关闭。