>%s\n",environ[i++]);printf("Pressanykeytoquit.." />
C语言文件操作之----文件的读写
一.下获取环境变量
#include <>
#include <>
int main(void)
{
char *path,*ptr;
int i=0;
puts("This program is to get the information of environ.");
while(environ[i])
printf(">>%s\n",environ[i++]);
printf("Press any key to quit...");
getch();
return 0;
}
二.获取CapsLock键状态
#include <>
#include <>
int main()
{
int value=0;
printf("\n\The current status of the Caps Lock key is:");
value=peekb(0x0040,0x0017);
if(value&64)
{
printf("\n\n The Caps Lock key is:on");
sleep(10);
}
else
{
printf("\n\n The Caps Lock Key is:off");
sleep(10);
}
}
运行Windows 系统版本
当文件按指定的工作方式打开以后,就可以执行对文件的读和写。
下面按文件的性质分类进行操作。
对文本文件来说,可按字符读写或按字符串读写;
对二进制文件来说,可进行成块的读写或格式化的读写。
1. 读写字符
C提供fgetc和fputc函数对文本文件进行字符的读写,其函数的原型存于头文件中,格式为:
int fgetc(FILE *stream)
fgetc( )函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符处,如果已到文件尾,函数返回EOF,此时表示本次操作结束,若读写文件完成,则应关闭文件。
int fputc(int ch,FILE *stream)
fputc()函数完成将字符ch的值写入所指定的流文件的当前位置处,并将文件指针后移一位。fputc()函数的返回值是所写入字符的值,出错时返回EOF。
[例8-2] 将存放于磁盘的指定文本文件按读写字符方式逐个地从文件读出,然后再将其显示到屏幕上。采用带参数的main( ),指定的磁盘文件名由命令行方式通过键盘给定。
#i nclude<>
main(int argc,char *argv[])
{
char ch;
FILE *fp;
int i;
if((fp=fopen(argv[1],"r"))==NULL) /* 打开一个由argv[1]所指的文件*/
{
printf("not open");
exit(0);
}
while ((ch=fgetc(fp))!=EOF) /* 从文件读一字符,显示到屏幕*/ putchar(ch);
fclose(fp);
}
程序是一带参数的main( )函数,要求以命令行方式运行,其参数argc是用于记录输入参数的个数,argv是指针数组,用于存放输入参数的字符串,串的个数由argc描述。假设我们指定读取的文件名为,并且列表文件内容就是源程序。经过编译和连接生成可执行的文件。运行程序,输入的命令行方式为:
c:\tc>-2 L
上述程序以命令行方式运行,其输入参数字符串有两个,即argv[0]="c:\tc>l8-2"、argv[1]=" ",argc = 2。故打开的文件是。程序中对fgetc( )函数的返回值不断进行测试,若读到文件尾部或读文件出错,都将返回C的整型常量EOF,其值为非零有效整数。程序
的运行输出为源程序本身:
c:\tc>-2 L
#i nclude <>
main(int argc,char *argv[])
{
char ch;
FILE *fp;
int i;
if((fp=fopen(argv[1],"r"))==NULL) /* 打开一个由argv[1] 所指的文件*/
{
printf("not open");
exit(0);
}
while ((ch=fgetc(fp))!=EOF) /* 从文件读一字符,显示到屏幕*/ putchar(ch);
fclose(fp);
}
[例8-3] 从键盘输入字符,存到磁盘文件中:
给出原文件代码换成图片亲自运行后有误,所以附上自己调适的代码
自己调试的代码
#include <>
#include <>
int main( )
{
FILE *fp; /*定义文件变量指针*/
char ch;
if((fp=fopen("","w"))==NULL) /*以只写方式打开文件*/
{
printf("cannot open file!\n");
exit(0);
}
while ((ch=fgetchar())!='\n') /*只要输入字符非回车符*/
fputc(ch,fp); /*写入文件一个字符*/
fclose(fp);
return 0;
}
程序通过从键盘输入一以回车结束的字符串,写入指定的流文件,文件以文本只写方式打开,所以流文件具有可读性,能支持各种字符处理工具访问。简单地说,我们可以通过DOS提供的type命令来列表显示文件内容。
运行程序:
hello,i love you
在DOS操作系统环境下,利用type 命令显示文件如下:
c:\> type
hello,i love you
2. 读写字符串
C提供读写字符串的函数原型在头文件中,其函数形式为:Char *fgets(char *str,int num,FILE *stream)
fgets() 函数从流文件stream中读取至多num-1个字符,并把它们放入str指向的字符数组中。读取字符直到遇见回车符或E O F(文件结束符)为止,或读入了所限定的字符数。
int fputs(char *str,FILE *stream)
fputs( )函数将str指向的字符串写入流文件。操作成功时,函数返回0值,失败返回非零值。
[例8-4] 向磁盘写入字符串,并写入文本文件:
#i nclude<>
#i nclude<>
main( )
{
FILE *fp;
char str[128];
if ((fp=fopen("","w"))==NULL) /*打开只写的文本文件*/
{
printf("cannot open file!");
exit(0);
}
while((strlen(gets(str)))!=0)
{ /*若串长度为零,则结束*/
fputs(str,fp); /*写入串*/
fputs("\n",fp); /*写入回车符*/
}
fclose(fp); /*关文件*/
}
运行该程序,从键盘输入长度不超过1 2 7个字符的字符串,写入文件。如串长为0,即空串,程序结束。
输入:Hello!
How do you do
Good-bye!
运行结束后,我们利用dos的type命令列表文件:
c:\tc>type
Hello!
How do you do
Good-bye!
这里所输入的空串,实际为一单独的回车符,其原因是gets函数判断串的结束是以回车作标志的。
[例8-5] 从一个文本文件中读出字符串,再写入另一个文件。
C语言文件读写练习_一个文件复制程序阅读
这几天浏览了很多人的博客,发现似乎有这么个规律:大神的blog中代码很少甚至没有一行代码,且大多是写一些认真思考出来的东西,而像我这样的新手blog好多都是"贴代码",有时候连两句"废话"都懒得扯。
正文
这次整理的是我第一次用C写的文件复制程序。那时候为了理解流(Stream) 这个东西也算是费了心思了,印象最深刻的便是把流比作管道,
数据通过管道流通。到现在也不敢说完全理解,对新手而言,抽象的概念远不
如具体的代码让人安心。
对这些抽象的概念,我的一点点体会就是,一时不能理解没什么关系,多
写代码体验一下,多思考,慢慢的也就悟出来了
旧文中是按文本流复制的,如果仅仅是复制文本文件还行,
但是如果想要复制非文本文件,可能会出现问题。经测试,即使文件打开
方式是"rb","wb"也不能正常复制exe文件,原因应该在那个while循环上了。因
此这次改成以二进制流的形式复制。这样应该能用于所有类型的文件。旧文中
是一次复制一个字符,一般来说,这样的效率不高。就像上一篇中那样,频繁
地调用IO函数,性能损失特别大。所以这次同样尝试使用"缓存",我的方案是
使用fread()和fwrite()函数按字节块复制。
重新写的程序代码还是要贴出来的,呵呵:
#include <>
/* * * * * * * * * * * * * * * * * * *
* CopyFile: 此函数用于复制指定的文件到指定的位置,
* 功能算是Windows下的 copy, 或linux下的 cp.
* 这里的实现用了 fread() 和 fwrite(), 二进制流的形式读写
* 返回值: 非负数: 复制的字节数.
* 小于0的数: 请检查文件名是否正确输入, 是否合法.
* * * * * * * * * * * * * * * * * * */
long CopyFile(const char* file_1, const char* file_2)
{
FILE*pfRead = fopen(file_1, "rb"); FILE*pfWrite = fopen(file_2, "wb"); if(NULL ==
{
fclose(pfRead);
fclose(pfWrite);
return-1;
}
long bytesCount = 0;long最大可以表示不超过2GB的文件
/* 因为C没有byte类型,所以这里用char替代
* 貌似对大多数机器来说,char都是单字节
*/
int arrLen = 1024; int copiedLen; fclose(pfRead);
fclose(pfWrite);
return bytesCount;
}
/* 此程序从命令行参数获取文件名(路径):
* C:\>application_name file1_name file2_name
* Example:
* C:\> e:\ f:\
* 必须存在,可以不存在,会自动创建文件.
* 如果已存在,会被覆盖掉.
* (友情提示:注意保存重要的文件, 别被"盖"了!)
* */
int main(int argc, char*argv[])
{
if(argc == 3)
{
char* f1 = argv[1];
char* f2 = argv[2];
printf("Copy File 1: %s\n To File 2: %s\n", f1, f2);
puts("Copying......");
long bytesCount = CopyFile(f1, f2);
if(bytesCount < 0)
{
puts("Fail to copy.");
}
else
{
printf(" %ld bytes wrote into %s.\n", bytesCount, f2);
}
}
else
{
puts("parameters error");
}
在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2). fgets函数也有返回值,其返回值是字符数组的首地址。
·fputs函数的功能是向指定的文件写入一个字符串,其调用形式为:
fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名或指针变量,
例如:
fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。
【程序示例】
#include<>
#include<>
main()
{
char str[11];
FILE *fpr = fopen("","r");
FILE *fpw = fopen("","a+");
if(NULL == fpr){
printf(" open failed!\n");
exit(1);
}
if(NULL == fpw){
printf(" open failed!\n");
exit(1);
}
printf("file open successed!\n");
fgets(str,11,fpr);
printf("%s\n",str);
fputs(str,fpw);
fclose(fpr);
fclose(fpw);
exit(0);
}
(3)数据块读写函数:fread和fwrite
C语言还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。
·读数据块函数fread调用的一般形式为:fread(buffer,size,count,fp);
·写数据块函数fwrite调用的一般形式为:fwrite(buffer,size,count,fp);
其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。
【程序示例】
#include<>
#include<>
#define MAXSIZE 2
struct stu{
char name[20];
int age;
char addr[20];
}boy[MAXSIZE];
main()
{
FILE *fp = fopen("","w+");
struct stu rboy[MAXSIZE];
int i;
int temp = 0;
if(NULL == fp){
printf(" open failed!\n");
exit(1);
}
printf("File open successed!\n");
printf("input data: ");
for(i = 0;i < MAXSIZE;i++){
scanf("%s%d%s",boy[i].name,&boy[i].age,boy[i].addr);
}
for(i = 0;i < MAXSIZE;i++){
printf("%s %d %s\n",boy[i].name,boy[i].age,boy[i].addr);
}
fwrite(boy,sizeof(struct stu),MAXSIZE,fp);
rewind(fp);
fread(rboy,sizeof(struct stu),MAXSIZE,fp);
for(i = 0;i < MAXSIZE;i++){
printf("name:%s age:%d addr:%s\n",rboy[i].name,rboy[i].age,rboy[i].ad dr);
}
fclose(fp);
exit(0);
}
(4)格式化读写函数:fscanf和fprinf
fscanf函数,fprintf函数与scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。
这两个函数的调用格式为:
·fscanf(文件指针,格式字符串,输入表列);
·fprintf(文件指针,格式字符串,输出表列);
例如:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
【示例程序】
#include<>
#include<>
#define MAXSIZE 2
struct stu{
char name[20];
int age;
char addr[20];
}boy[MAXSIZE];
main()
{
FILE *fp = fopen("","w+");
struct stu rboy[MAXSIZE];
int i;
if(NULL == fp){
printf(" open failed!\n");
exit(1);
}
printf("enter data:\n");
for(i = 0;i < MAXSIZE;i++){
scanf("%s%d%s",boy[i].name,&boy[i].age,boy[i].addr);
}
for(i = 0;i < MAXSIZE;i++){
fprintf(fp,"%s %d %s\n",boy[i].name,boy[i].age,boy[i].addr);
}
for(i = i;i < MAXSIZE;i++){
fscanf(fp,"%s%d%s",rboy[i].name,&rboy[i].age,rboy[i].addr);
}
fclose(fp);
exit(0);
}
文件操作函数C语言(FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct{ int level;/*fill/empty level of buffer*/ unsigned flags;/*File status flags*/ char fd;/*File descriptor*/ unsigned char hold;/*Ungetc char if no buffer*/ int bsize;/*Buffer size*/ unsigned char_FAR*buffer;/*Data transfer buffer*/ unsigned char_FAR*curp;/*Current active pointer*/ unsigned istemp;/*Temporary file indicator*/ short token;/*Used for validity checking*/ }FILE;/*This is the FILE object*/ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen()打开流 fclose()关闭流 fputc()写一个字符到流中 fgetc()从流中读一个字符 fseek()在流中定位到指定的字符 fputs()写字符串到流 fgets()从流中读一行或指定个字符 fprintf()按格式输出到流 fscanf()从流中按格式读取 feof()到达文件尾时返回真值 ferror()发生错误时返回其值 rewind()复位文件定位器到文件开始处 remove()删除文件 fread()从流中读指定个数的字符 fwrite()向流中写指定个数的字符 tmpfile()生成一个临时文件流 tmpnam()生成一个唯一的文件名 下面就介绍一下这些函数 1.fopen() fopen的原型是:FILE*fopen(const char*filename,const char*mode),fopen实现三个功
Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操 作) //================================== fputc 向文件写入字符 #include
FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 文件结尾,通过判断EOF //============================================================== fwrite 的使用 使数组或结构体等类型可以进行一次性读写 #include
C程序文件的读写操作 在对文件进行读、写操作之前,首先要解决的问题是如何把程序中要读、写的文件与磁盘上实际的数据文件联系起来。在c语言中,其实这并不困难,只需要用c语言提供的库函数fopen“打开”文件就可以实现这些联系。Fopen函数的一般调用形式为: Fopen(文件名,文件使用方式); 函数返回一个指向file类型的指针。例如: FILE *fp; /*****定义一个文件指针*/ fp=fopen(”file_a”,”r”); foen函数调用中用两个字符串作为参数。第一个字符串中包含了进行读、写操作的文件名,用来指定所要打开的文件。在本例中,指定的函数名:file_a。第二个字符串中指定了文件的使用方式,用户可通过这个参数来指定对文件的使用意图。 如果以上函数调用成功,函数返回一个fille类型的指针,付给指针变量fp,从而把指针fp与文件file_a联系起来,也就是说,在此调用之后,指针fp就指向了文件file_a。 C语言中,最常用的文件使用用方式及其含义如下: (1)“r”。为读而打开文本文件。当指定这种形式时,对打开的文件只能进行“读”操作。若制定的文件不存在,则会出错,若去读一个不允许读的文件时也会出错。 (2)“rb”。为读而打开一个二进制文件,其余如“r”功能。 (3)“w”。为写而打开文本文件。这是。如果指定的文件不存在,系统将在指定位置建立一个新文件;如果文件已经存在,则将从文件的起始位置开始写,文件中原有内容将全部覆盖。 (4)“WB”. 为读而打开一个二进制文件,其余如“w”功能。 (5)“a”。为在文件后面添加数据而打开文本文件。这是。如果指定的文件不存在,系统将在指定位置建立一个新文件;如果文件已经存在,则将从文件的末尾位置开始写,文件中原有内容将保留。 (6)“ab”。为读而打开一个二进制文件,其余如“a”功能。 (7)“r+”。为读和写而打开文本文件。用这种方式时,指定的文件应当已经存在,既可以对文件进行读,也可以进行写。读写都是从文件起始位置开始。 关闭文件: fclose(文件指针); 程序例子: #include
C语言读写文件操作 #include
C语言中文件,数据的输入输出,读写. 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。 FILE *fp; fp=fopen(“C:\\Windowss\\abc.txt”,”r”); 注意用两个反斜杠\\来表示目录间的间隔符。 存取文件的模式是一个字符串,可以由字母r,w,a,t,b及+组合而成,各字符的含
C语言文件读写函数 1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen 实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。 参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下: 字符串含义 "r" 以只读方式打开文件 "w" 以只写方式打开文件 "a" 以追加方式打开文件 "r+" 以读/写方式打开文件,如无文件出错 "w+" 以读/写方式打开文件,如无文件生成新文件 一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符’/n’,而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。
系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而 _fmode=O_BINARY;则设置默认打开方式是二进制模式。 我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件。 此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL. 例: 以下是引用片段: FILE *fp; if(fp=fopen("123.456","wb")) puts("打开文件成功"); else puts("打开文件成败"); 2.fclose() fclose()的功能就是关闭用fopen()打开的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失败返回EOF。 在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况,我以前就经常犯这样的错误。 例:fclose(fp); 3.fputc()
C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include
C语言中对文件进行操作如何使用绝对路径? 我编了一个小程序试了一下,好像默认的路径是在生成的.exe文件所在目录下。如果使用像D:\\ABC.TXT这样的路径可以在D盘下对ABC.TXT进行操作,但如果使用D:\\SSS\ABC.TXT就不正确了,创建的文件是SSSABC.TXT,不支持多级的路径,它把路径和文件名弄混了。 到底怎么办 D:\\SSS\\ABC.TXT //你少了个\,在C字符串中,出现\的地方,你一律打两个\\就行了。 请问啊,C语言里,fopen、fread与fwrite的参数中,要求文件名,用写盘符吗? 写绝对路径吗?#include
C语言文件读写(基于缓冲技术) Syd168 2011.10.1 当文件按指定的工作方式打开以后,就可以执行对文件的读和写。下面按文件的性质分类进行操作。针对文本文件和二进制文件的不同性质,对文本文件来说,可按字符读写或按字符串读写;对二进制文件来说,可进行成块的读写或格式化的读写。 0. 文件打开与关闭 1. 读写字符 C提供fgetc和fputc函数对文本文件进行字符的读写,其函数的原型存于stdio.h头文件中,格式为: ?int fgetc(FILE *stream) fgetc( )函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符处,如果已到文件尾,函数返回EOF,此时表示本次操作结束,若读写文件完成,则应关闭文件。 ?int fputc(int ch,FILE *stream) fputc()函数完成将字符c h的值写入所指定的流文件的当前位置处,并将文件指针后移一位。 fputc()函数的返回值是所写入字符的值,出错时返回EOF。 [例] 将存放于磁盘的指定文本文件按读写字符方式逐个地从文件读出,然后再将其显示到屏幕上。 采用带参数的main( ),指定的磁盘文件名由命令行方式通过键盘给定。
参数argc是用于记录输入参数的个数,argv是指针数组,用于存放输入参数的字符串,串的个数由argc描述。假设我们指定读取的文件名为L8-2.c,并且列表文件内容就是源程序。经过编译和连接生成可执行的文件L8-2.exe。运行程序l8-2.exe,输入的命令行方式为: c:\tc>l8-2 L8-2.c 上述程序以命令行方式运行,其输入参数字符串有两个,即argv[0]="c:\tc>l8-2"、argv[1]=" L8-2.c ",argc = 2。故打开的文件是L8-2.c 。程序中对fgetc( )函数的返回值不断进行测试,若读到文件尾部或读文件出错,都将返回C的整型常量EOF,其值为非零有效整数。程序的运行输出为源程序本身:c:\tc>l8-2 L8-2.c
C语言文件选择题(答案在最后) 1、标准库函数fgets(s,n,f)的功能是 A) 从文件f中读取长度为n的字符串存入指针s所指的内存 B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存 C) 从文件f中读取n个字符串存入指针s所指的内存 D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存 2、在C中,对文件的存取以________为单位 A) 记录B) 字节 C) 元素D) 簇 3、下面的变量表示文件指针变量的是 A) FILE *fp B) FILE fp C) FILER *fp D) file *fp 4、在C中,下面对文件的叙述正确的是 A) 用“r”方式打开的文件只能向文件写数据 B) 用“R”方式也可以打开文件 C) 用“w”方式打开的文件只能用于向文件写数据,且该文件可以不存在 D) 用“a”方式可以打开不存在的文件 5、在C中,当文件指针变fp已指向“文件结束”,则函数feof(fp)的值是 A) .t. B) .F. C) 0 D) 1 6、在C中,系统自动定义了3个文件指针stdin,stdout和stderr分别指向终端输入、终端输出和标准出错输出,则函数fputc(ch,stdout)的功能是 A) 从键盘输入一个字符给字符变量ch B) 在屏幕上输出字符变量ch的值 C) 将字符变量的值写入文件stdout中 D) 将字符变量ch的值赋给stdout 7、下面程序段的功能是 #include
文件 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。
/*C语言使用文件打开文本文件读写的例子*/ 例1:功能:以文本方式生成一个文件,将"50 100 150"等数字输出到 文件中 #include
C语言文件读写 -- C语言的文件操作 文件的基本概念 所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。 设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。通常把显示器定义为标准输出文件,一般情况下在屏幕上显示有关信息就是向标准输出文件输出。如前面经常使用的pri ntf,putchar 函数就是这类输出。键盘通常被指定标准的输入文件,从键盘上输入就意味着从标准输入文件上输入数据。scanf,getchar函数就属于这类输入。 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码:00110101 00110110 00110111 00111000 ↓ ↓↓ ↓ 十进制码:5678 共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TY PE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。 本章讨论流式文件的打开、关闭、读、写、定位等各种操作。文件指针在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。定义说明文件指针的一般形式为:FILE* 指针变量标识符;其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。在编写源程
include
C语言文件操作函数大全(超详细) 作者: 本篇文章是对C语言中的文件操作函数进行了详细的总结分析,需要的朋友参考下 fopen(打开文件)相关函数open,fclose 表头文件#include
C语言程序可以同时处理多个文件,为了对每一个文件进行有效的管理,在打开一个文件时,系统会自动地在内存中开辟一个区,用来存放文件的有关信息(如文件名、文件状态等) 这些信息保存在一个结构体变量中,该结构体是由系统定义的,取名为FILE。FILE定义在头文件stdio.h中。 对每一个要进行操作的文件,都需要定义一个指向FILE类型结构体的指针变量,该指针称为文件类型指针,文件类型指针的定义方法如下: FILE *指针变量; 如:FILE *fp; fp是一个指向FILE类型结构体的指针变量。当fp和某个文件建立关联之后,通过fp 即可找到存放该文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。 文件打开函数fopen() ?Fopen 函数的作用: 以指定方式打开指定文件。 打开成功,返回一个文件类型指针; 打开失败,则返回一个空指针NULL。 格式: FILE *文件指针变量; 文件指针变量=fopen(“文件名”, “文件使用方式”); “文件名”指要打开文件的名称。 “文件使用方式”指文件的类型和操作要求。如下表所示:
通常打开文件的方法: ? FILE *文件指针变量; 文件指针变量=fopen(“文件名”, “文件使用方式”); If(文件指针变量= =NULL) { printf(“cannot open this file\n”); exit(0); } 注:当打开文件出错时,函数 fopen 会返回一个空指针NULL 出错原因可能是以“r”方式打开一个不存在的文件,或者是磁盘已满等。关闭文件的函数: fclose(文件指针变量); 功能:用来关闭文件指针变量所指向的文件。成功返回0,否则返回非零值。 如:fclose(fp); 注:1 使用完一个文件后应即时关闭。否则会浪费系统资源。 2 关闭文件后,文件指针变量不再指向该文件,不能再通过该指针对该文件继续进行读写操作,除非再次打开该文件,使该指针变量重新指向该文件。
C语言实现myql中存取二进制文件 include
#include c语言程序中文件的操 作 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208] 文件操作函数 C语言 (FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在中定义如下: typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中 #includec语言程序中文件的操作
C语言用指针和链表读写文件