c语言文件读写方法
- 格式:doc
- 大小:26.00 KB
- 文档页数:2
c语言打开文件并查询文件内容的方法在C语言中,打开文件并查询文件内容是一项常见的任务。
本篇文章将详细介绍如何使用C语言打开文件并查询文件内容。
一、打开文件在C语言中,可以使用标准库函数fopen()来打开文件。
fopen()函数的第一个参数是文件路径和名称,第二个参数是打开文件的模式。
打开文件的模式可以包括读取("r")、写入("w")、追加("a")等。
以下是一个打开文件的示例代码:```cFILE *file = fopen("example.txt", "r");if (file == NULL) {printf("无法打开文件\n");return 1;}```在上面的代码中,我们尝试打开名为"example.txt"的文件,并以只读模式("r")打开它。
如果文件无法打开,我们将输出一条错误消息并返回1。
二、查询文件内容一旦文件被打开,我们可以使用fgetc()、fgets()、fread()等函数来查询文件内容。
这些函数将从文件中逐个字符或指定数量的字节读取数据。
以下是一个使用fgets()函数来查询文件内容的示例代码:```cchar buffer[1024];while (fgets(buffer, sizeof(buffer), file) != NULL) {printf("%s", buffer);}```在上面的代码中,我们使用fgets()函数从文件中读取指定数量的字符,并将其存储在缓冲区中。
然后,我们使用printf()函数将缓冲区中的内容打印到控制台上。
如果要查询整个文件的内容,可以使用循环来逐个字符地读取文件,直到到达文件的末尾。
三、关闭文件在完成对文件的操作后,应该使用fclose()函数关闭文件。
C语言文件操作完全攻略数据的输入和输出几乎伴随着每个C 语言程序,所谓输入就是从“源端”获取数据,所谓输出可以理解为向“终端”写入数据。
这里的源端可以是键盘、鼠标、硬盘、光盘、扫描仪等输入设备,终端可以是显示器、硬盘、打印机等输出设备。
在C 语言中,把这些输入和输出设备也看作“文件”。
文件及其分类计算机上的各种资源都是由操作系统管理和控制的,操作系统中的文件系统,是专门负责将外部存储设备中的信息组织方式进行统一管理规划,以便为程序访问数据提供统一的方式。
文件是操作系统管理数据的基本单位,文件一般是指存储在外部存储介质上的有名字的一系列相关数据的有序集合。
它是程序对数据进行读写操作的基本对象。
在C 语言中,把输入和输出设备都看作文件。
文件一般包括三要素:文件路径、文件名、后缀。
由于在C 语言中'\' 一般是转义字符的起始标志,故在路径中需要用两个'\' 表示路径中目录层次的间隔,也可以使用'/' 作为路径中的分隔符。
例如,"E:\\ch10.doc"或者"E:/ch10.doc",表示文件ch10.doc 保存在E 盘根目录下。
"f1.txt" 表示当前目录下的文件f1.txt。
文件路径:可以显式指出其绝对路径,如上面的”E:\\”或者”E:/”等;如果没有显式指出其路径,默认为当前路径。
C 语言不仅支持对当前目录和根目录文件的操作,也支持对多级目录文件的操作,例如:或者中的file_1.txt 均是C 语言可操作的多级目录文件。
文件名:标识文件名字的合法标识符,如ch10、file_1 等都是合法的文件名。
后缀:一般用于标明文件的类型,使用方式为:文件名.后缀,即文件名与后缀之间用'.' 隔开。
常见的后缀类型有:doc、txt、dat、c、cpp、obj、exe、bmp、jpg 等。
C语⾔--file⽂件指针及操作⽂件⽂件的基本概念 所谓“⽂件”是指⼀组相关数据的有序集合。
这个数据集有⼀个名称,叫做⽂件名。
实际上在前⾯的各章中我们已经多次使⽤了⽂件,例如源程序⽂件、⽬标⽂件、可执⾏⽂件、库⽂件 (头⽂件)等。
⽂件通常是驻留在外部介质(如磁盘等)上的,在使⽤时才调⼊内存中来。
从不同的⾓度可对⽂件作不同的分类。
从⽤户的⾓度看,⽂件可分为普通⽂件和设备⽂件两种。
普通⽂件是指驻留在磁盘或其它外部介质上的⼀个有序数据集,可以是源⽂件、⽬标⽂件、可执⾏程序;也可以是⼀组待输⼊处理的原始数据,或者是⼀组输出的结果。
对于源⽂件、⽬标⽂件、可执⾏程序可以称作程序⽂件,对输⼊输出数据可称作数据⽂件。
设备⽂件是指与主机相联的各种外部设备,如显⽰器、打印机、键盘等。
在操作系统中,把外部设备也看作是⼀个⽂件来进⾏管理,把它们的输⼊、输出等同于对磁盘⽂件的读和写。
通常把显⽰器定义为标准输出⽂件,⼀般情况下在屏幕上显⽰有关信息就是向标准输出⽂件输出。
如前⾯经常使⽤的printf,putchar 函数就是这类输出。
键盘通常被指定标准的输⼊⽂件,从键盘上输⼊就意味着从标准输⼊⽂件上输⼊数据。
scanf,getchar函数就属于这类输⼊。
从⽂件编码的⽅式来看,⽂件可分为ASCII码⽂件和⼆进制码⽂件两种。
ASCII⽂件也称为⽂本⽂件,这种⽂件在磁盘中存放时每个字符对应⼀个字节,⽤于存放对应的ASCII码。
例如,数5678的存储形式为:ASC码: 00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓⼗进制码: 5 6 7 8 共占⽤4个字节。
ASCII码⽂件可在屏幕上按字符显⽰,例如源程序⽂件就是ASCII⽂件,⽤DOS命令TYPE可显⽰⽂件的内容。
由于是按字符显⽰,因此能读懂⽂件内容。
⼆进制⽂件是按⼆进制的编码⽅式来存放⽂件的。
例如,数5678的存储形式为: 00010110 00101110只占⼆个字节。
C语言中read的用法1. 简介在C语言中,read是一个系统调用函数,用于从文件描述符中读取数据。
它可以读取任何类型的文件,包括普通文件、设备文件和管道等。
2. 函数原型#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);3. 参数说明•fd:文件描述符,用于指定要读取的文件。
•buf:缓冲区指针,用于存储读取到的数据。
•count:要读取的字节数。
4. 返回值read函数返回实际读取到的字节数。
如果返回值为0,则表示已经到达文件末尾;如果返回值为-1,则表示出现了错误。
5. 使用示例下面是一个简单的示例代码,展示了如何使用read函数从标准输入中读取数据并输出到标准输出:#include <unistd.h>#include <stdio.h>int main() {char buffer[1024];ssize_t bytesRead;printf("请输入一段文字:\n");bytesRead = read(STDIN_FILENO, buffer, sizeof(buffer));if (bytesRead == -1) {perror("读取错误");return 1;}printf("您输入了 %zd 字节的内容:\n", bytesRead);write(STDOUT_FILENO, buffer, bytesRead);return 0;}在上述示例代码中,首先定义了一个大小为1024的字符数组buffer作为读取数据的缓冲区。
然后使用read函数从标准输入中读取数据,将读取到的字节数保存在bytesRead变量中。
接着判断read函数的返回值,如果返回值为-1,则表示出现了错误,可以使用perror函数输出错误信息。
c语言的readline() 方法readline() 方法是C语言中常用的输入函数之一,它的主要作用是从标准输入流中读取一行字符并返回。
本文将详细介绍readline() 方法的使用方法和注意事项。
readline() 方法可以通过以下方式进行调用:```c#include <stdio.h>char* readline();```readline() 方法的返回值是一个指向字符数组的指针,该数组存储了读取到的一行字符。
需要注意的是,readline() 方法会自动在字符串末尾添加一个空字符'\0'。
下面是一个简单的示例,演示了如何使用readline() 方法从标准输入流中读取一行字符并输出:```c#include <stdio.h>int main() {char* line;printf("请输入一行字符:\n");line = readline();printf("您输入的字符是:%s\n", line);return 0;}```在运行以上代码时,程序会首先提示用户输入一行字符。
用户输入完成后,readline() 方法会将用户输入的字符存储在line变量中,并打印输出。
readline() 方法的使用非常灵活,可以结合其他输入输出函数一起使用。
例如,可以使用fgets() 函数从文件中读取一行字符,然后使用readline() 方法对字符进行处理。
需要注意的是,readline() 方法有一些限制。
首先,它只能读取一行字符,无法读取多行字符。
其次,readline() 方法读取的字符包括换行符。
因此,在进行后续处理时,可能需要将换行符去除。
为了更好地理解readline() 方法的使用,下面将介绍一些常见的应用场景。
1. 从文件中读取数据:readline() 方法可以与文件读写函数一起使用,从而实现从文件中读取一行数据的功能。
#include <stdio.h>
#define SIZE 5
struct student_type
{
int num;
char name[10];
char sex[3];
int age;
char addr[30];
char department[20];
char major[20];
char classes[20];
char state[20];
}stud[SIZE];
//txt文件读取
void read()
{
FILE *fp;
int i;
if((fp=fopen("stu.txt","r"))==NULL) //文件的放的位置是 .c文件夹下
{ printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%d%s%s%d%s%s%s%s%s",&stud[i].num,stud[i].name,
stud[i].sex,&stud[i].age,stud[i].addr,stud[i].department, stud[i].major,stud[i].classesstud[i].state);
}
fclose(fp);
}
void screen()
{
int i;
printf("%-13s%-9s%7s%9s%13s%9s%9s%9s\n","学号","姓名","性别","年龄","籍贯","院","系","班级","状态");
for(i=0;i<SIZE;i++)
{
printf("%-10d%-7s%7s%9d%13s%9s%9s%9s%6s\n",
stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].addr,
stud[i].department,stud[i].major,stud[i].classes,stud[i].state);
}
}
//写入txt文件
void save( )
{ FILE *fp;
int i;
if((fp=fopen("e:\\student.txt","w"))==NULL) //把student.txt 文件放在e盘 { printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
{
fprintf(fp,"%-10d%-7s%7s%9d%13s%9s%9s%9s%6s \n",
stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].addr,
stud[i].department,stud[i].major,stud[i].classes,stud[i].state);
}
fclose(fp);
}
void main()
{ int i;
printf("请依次输入:学号姓名性别年龄籍贯院系班级状态");
printf("\n");
for(i=0;i<SIZE;i++)
scanf("%d%s%s%d%s%s%s%s%s",
&stud[i].num,stud[i].name,
stud[i].sex,&stud[i].age,stud[i].addr,stud[i].department, stud[i].major,stud[i].classes,stud[i].state);
save( );
/* read();
screen();*/
}。