当前位置:首页 » 编程语言 » c语言file结构

c语言file结构

发布时间: 2022-05-26 22:08:33

① 详细说明c语言中FILE结构体的成员含义,求大佬解答

struct _iobuf {
char *_ptr; //文件输入的下一个位置
int _cnt; //当前缓冲区的相对位置
char *_base; //指基础位置(应该是文件的其始位置)
int _flag; //文件标志
int _file; //文件的有效性验证
int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取
int _bufsiz; //文件的大小
char *_tmpfname; //临时文件名
};
typedef struct _iobuf FILE;

② C语言FILE类型怎么知道指向哪个文件

文件名在fopen中是需要提供的,是字符串类型。
open了几次,我不知道哪个文件没关掉 这句话没理解什么意思
File类型没有存储指向的文件名,File类型定义:
struct{
int _fd;//文件号
int _cleft;//缓冲区所剩下的字符数
int _mode;//文件操作方式
char* _next;//文件当前读写位置
char* _buff;//文件缓冲区位置
}FILE;

③ C语言中FILE结构问题

我来回答吧:
首先是两个输入文件:
一个文本文件:scoret.txt
一个二进制文件:scoreb.txt
文本文件scoret.txt我们可以直接编辑(按要求编辑五个学生的姓名和成绩),而二进制文件不易编辑。
我们先写一个代码,实再将scoret.txt文件转成二进制文件scoreb.txt
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct stu {
char name[30];
int grade;
};

int main()
{
int i,n;
struct stu s[10];
FILE *fpIt,*fpIb; /*输入*/
FILE *fpOt,*fpOb; /*输出*/

fpIt=fopen("scoret.txt","r");
fpIb=fopen("scoreb.txt","wb");
if (fpIt==NULL || fpIb==NULL)
{
printf("File Open Error:\npress any key to exit:\n");
getch();
return -1;
}

i=0;
while (!feof(fpIt))
{
fgets(s[i].name,30,fpIt); /*有空格只能这样输入*/
fscanf(fpIt,"%d\n",&s[i].grade); /*文本输入*/
printf("i=%d,name=%s\t grade=%d\n",i,s[i].name,s[i].grade);
getch();

fwrite(&s[i],sizeof(struct stu),1,fpIb);
i++;
}
n=i;
printf("n=%d\n",n);
fclose(fpIt);
fclose(fpIb);
getch();
return 0;
}

===============
上面的代码在TC或VC下编辑运行,就可以生成scoreb.txt文件。这时scoreb.txt的学生信息与scoret.txt是一样的。
接着就要修改一下scoret.txt文件的内容,重新编辑5个学生的信息给scoreb.txt
这样使得scoret.txt与scoreb.txt分别各有五个学生的信息。
当然你如果有原始文件的话,上面都是浮云。

下面是你这个问题的重点:
#include <mem.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct stu {
char name[30];
int grade;
};

int main()
{
int i,j,n;
struct stu s[10],temp;
FILE *fpIt,*fpIb; /*输入*/
FILE *fpOt,*fpOb; /*输出*/

fpIt=fopen("scoret.txt","r");
fpIb=fopen("scoreb.txt","rb");
fpOt=fopen("scoreOt.txt","w");
fpOb=fopen("scoreOb.txt","wb");

if (fpIt==NULL || fpIb==NULL || fpOt==NULL || fpOb==NULL)
{
printf("File Open Error:\npress any key to exit:\n");
getch();
return -1;
}

n=0;
while (!feof(fpIt))
{
fgets(s[n].name,30,fpIt); /*有空格只能这样输入*/
fscanf(fpIt,"%d\n",&s[n].grade); /*文本输入*/
printf("n=%d,name=%s\t grade=%d\n",n,s[n].name,s[n].grade);
getch();
n++;
}
fclose(fpIt);
printf("===========\n");
while (!feof(fpIb) && n<10)
{
fread(&s[n],sizeof(struct stu),1,fpIb);
printf("n=%d,name=%s\t grade=%d\n",n,s[n].name,s[n].grade);
getch();
n++;
}
printf("n=%d\n",n);
fclose(fpIb);

/*排序*/
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (s[i].grade<s[j].grade)
{ /*整个结构体复制,如果不用memcpy的话,要先复制name的内容和grade*/
memcpy(&temp,&s[i],sizeof(struct stu));
memcpy(&s[i],&s[j],sizeof(struct stu));
memcpy(&s[j],&temp,sizeof(struct stu));
}
for (i=0;i<n;i++)
printf("%d %s",s[i].grade,s[i].name);

/*写文件*/
for (i=0;i<5;i++)
fprintf(fpOt,"%s%d\n",s[i].name,s[i].grade);
fclose(fpOt);

for (i=5;i<10;i++)
fwrite(&s[i],sizeof(struct stu),1,fpOt);
fclose(fpOt);

getch();
return 0;
}

==============================
总结:
文本文件一般用:
读:fscanf函数或fgets函数,
写:fprintf函数即可(当然也可以用fputs函数)
二进制文件一般用:
读:fread函数
写:fwrite函数。

当然二进制文件你如果用记事本打开的话,一般是乱码。你可以弄一个UltraEdit之类的文本编辑器,查看其二进制代码。
2011年

④ C语言中文件由什么 组成

C语言中文件由字符序列组成。C语言处理文件的方法是将文件以数据流的形式处理,不是将文件作为一个结构集合来处理,所以,C语言中文件的组织方式是无结构的字符序列方式。

C语言的优点有三个:

1、代码量小。

要完成同样一个功能,用C语言编写出来的程序的容量是很小的,而用其他语言编写容量就会比较大。

2、运行速度快。

3、功能强大。

(4)c语言file结构扩展阅读:

C语言的特点:

1、语言简洁,紧凑,使用方便,灵活

2、运算符丰富

3、数据类型丰富,具有现代语言的各种数据结构

4、具有结构化的控制语句

5、语法限制不太严格,程序设计自由度大

6、C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功

能,可以直接对硬件进行操作

7,生成目标代码质里高,程序执行效率高

8,用C语言编写的程序可移植性好(与汇编语言比)

算法的特性:

1、有穷性,一个算法应包含的有限的操作步骤,而不能是无限的

2、确定性,算法的每一个步骤都应该是确定的,而不应当是含糊的,模棱两可的

3、有零个或多个输入,所谓输入是指执行算法时需要从外界取得必要的信息

4、有一个或多个输出,算法的目的就是为了求解,解就是输出

5,有效性,算法中的每一个步骤都应该能有效的执行,并得出确定的结果

⑤ C语言中FILE*fp是什么意思

FILE 是系统定义的一种结构类型的名称。

FILE *fp; 变量类型声明。声明 fp 是 FILE型指针,用于指向FILE类型 (文件结构)。

文件流-- 排成一队,有先后次序的 输入(或输出)一串数据,驻留并通过 输入输出缓冲区,进出程序。如同水流般地流入或流出。它来自文件或写入文件。

(5)c语言file结构扩展阅读:

FILE *fp的替换用法:

fp=fopen("test.dat", "w"); /*建立一个文字文件只写*/

fclose(fp); /*关闭文件*/

fwrite(const void*buffer,size_t size,size_t count,FILE*stream);

1、buffer:是一个指针,对fwrite来说,是要输出数据的地址。

2、size:要写入的字节数;

3、count:要进行写入size字节的数据项的个数;

4、stream:目标文件指针。

⑥ c语言中文件类型有几种

主要是两种文件类型:1)文本文件,2)二进制文件。
一般来说,人类可读的文件都作为文本文件,例如一片文章。其余都作为二进制文件,例如一个程序。
在C语言中,文件的操作是通过FILE结构体进行了,利用fopen返回一个指向FILE结构体的指针,在使用fopen函数过程中,使用mode控制符对是否打开哪类文件进行控制:
FILE *fopen( const char *filename, const char *mode );
filename:文件名,mode:打开的模式,规定了是可读、可写、追加之类的属性。
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
如果调用失败,返回一个空指针。

⑦ C语言FILE结构体如何解释

FILE结构体

C语言的stdio.h头文件中,定义了用于文件操作的结构体FILE。这样,我们通过fopen返回一个文件指针(指向FILE结构体的指针)来进行文件操作。可以在stdio.h(位于visual studio安装目录下的include文件夹下)头文件中查看FILE结构体的定义,如下:
TC2.0中:
typedef struct {
short level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */
short bsize; /* Buffer size */
unsigned char *buffer; /* Data transfer buffer */
unsigned char *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */

VC6.0中:
#ifndef _FILE_DEFINED
struct _iobuf {

char *_ptr; //文件输入的下一个位置
int _cnt; //当前缓冲区的相对位置
char *_base; //指基础位置(即是文件的其始位置)
int _flag; //文件标志
int _file; //文件的有效性验证
int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取
int _bufsiz; //???这个什么意思
char *_tmpfname; //临时文件名
};
typedef struct _iobuf FILE;
#define _FILE_DEFINED
#endif

用VC 控制台程序实现Word 的排版功能,输入文件名读取小于64k 的英文文本,
然后对英文文本进行匀齐排版,最后结果为:一行70个字符,左右两边分别空
4 个字符,长单词不能折断,每行必须对齐,单词中间插入空格。均匀插入。
注意:1、不能用STL库,类似文件流fstream都不允许用
2、不能用sdk,mfc,windows api
3、用最基本的c/c++实现
从文件输入输出:
#include<stdio.h>
FILE *in,*out;
in=fopen("a.txt","r"); //其意义是在当前目录下打开文件a.txt, 只允许进行“读”操作,并使in指向该文件。
out=fopen("aout.txt","w"); //打开aout.txt, 只能向该文件写入数据, 如果不存在则创建aout.txt;
fscanf(in,"%d",&a);
fprintf(out,"%d",a);
fscanf(stdin,"%d",&a)=scanf("%d",&a);
fclose(in);
fclose(out);

文件使用方式 意 义
“rt”只读打开一个文本文件,只允许读数据
“wt”只写打开或建立一个文本文件,只允许写数据
“at”追加打开一个文本文件,并在文件末尾写数据
“rb”只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据

对于文件使用方式有以下几点说明:
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2. 凡用“r”打开一个文件时,该文件必须已经存在, 且只能从该文件读出。
3. 用“w”打开的文件只能向该文件写入。 若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。
5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:
if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror on open c:\\hzk16 file!");
getch(); //等待用户敲入一个字符再运行
exit(1);
}

* 字符读写函数 :fgetc和fputc
* 字符串读写函数:fgets和fputs
* 数据块读写函数:freed和fwrite
* 格式化读写函数:fscanf和fprinf

⑧ 在C语言中,FILE是关键字吗

FILE不是C语言关键字,只是标准C中的标准输入输出中定义的一个新的数据类型
stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname;} FILE;FILE 主要用来定义带缓冲的文件指针,如:FILE *fp;

附:C语言一共有32个关键字,如下:
auto 局部变量(自动储存)break 无条件退出程序最内层循环case switch语句中选择项char 单字节整型const 定义不可更改值的变量continue 中断本次循环,并转向下一次循环default switch语句中的默认选择项do 用于构成do.....while循环语句double 双精度浮点型else 构成if.....else选择程序结构enum 枚举extern 声明外部全局变量float 单精度浮点型for 构成for循环语句goto 跳到程序中指定的标签位置if 构成if....else选择结构int 整型long 长整型register 定义CPU内部寄存的变量return 用于返回函数的返回值short 短整型signed 有符号数 与基本整型类型结合使用sizeof 计算表达式或数据类型的占用字节数static 定义静态变量、函数struct 定义结构类型switch 构成switch选择结构typedef 重新定义数据类型union 联合类型unsigned 定义无符号数据 与基本整型类型结合使用void 定义任意类型指针void * , 无参数 , 无返回值等volatile 易失性变量while 用于构成do...while或while循环结构

热点内容
威兰达四驱豪华版都有哪些配置 发布:2025-02-12 16:54:34 浏览:120
nokia恢复出厂密码是多少 发布:2025-02-12 16:49:03 浏览:276
什么是系统相册缓存 发布:2025-02-12 16:49:02 浏览:521
怎么创建密码重置盘 发布:2025-02-12 16:36:59 浏览:676
php读取时间 发布:2025-02-12 16:23:48 浏览:385
祛痘液如何配置 发布:2025-02-12 16:21:22 浏览:748
安卓手机如何拷贝电脑里 发布:2025-02-12 16:16:30 浏览:860
linux怎么编译内核 发布:2025-02-12 16:03:02 浏览:189
新的怎么注册微信账号密码忘了怎么办 发布:2025-02-12 15:50:08 浏览:660
android代码搜索 发布:2025-02-12 15:45:36 浏览:779