C语言中从.txt文件中按行读取字符串至数组中
c语言fgets用法 -回复
c语言fgets用法-回复C语言中的fgets函数是一个非常常用的输入函数,用于从文件或标准输入中读取一行字符。
本文将详细介绍fgets函数的用法,并给出一些示例代码来帮助读者更好地理解。
一、fgets函数的定义fgets函数的定义如下:cchar *fgets(char *str, int n, FILE *stream);在这个定义中,参数str是一个指向字符数组的指针,用于存储读取的字符;参数n表示读取的最大字符数,这样可以避免内存溢出的问题;参数stream是一个指向FILE结构的指针,用于指定要从哪个文件或标准输入中读取。
fgets函数的返回值是一个指向str的指针,如果发生错误或读取到文件结尾则返回NULL。
二、fgets函数的使用步骤使用fgets函数从文件或标准输入中读取字符的步骤如下:1. 包含头文件在使用fgets函数之前,需要包含stdio.h头文件,该头文件中包含了fgets 函数的原型。
2. 打开文件(可选)如果要从文件中读取字符,可以使用fopen函数打开文件,并将返回的文件指针传递给fgets函数的stream参数。
如果要从标准输入中读取字符,则可以直接使用标准输入流stdin。
3. 分配存储空间在调用fgets函数之前,需要为str参数分配足够的存储空间,以确保能够容纳读取的字符。
可以使用数组或动态分配的内存来存储读取的字符。
4. 调用fgets函数调用fgets函数时,将str指针、最大字符数n和文件指针stream传递给它。
fgets函数将读取最多n-1个字符,并在末尾添加一个空字符'\0'作为字符串的结束标志。
如果读取的字符数小于n-1,则fgets函数会在读取完一行字符之后停止,并返回str指针。
5. 处理读取到的字符可以通过检查返回值来判断读取是否成功。
如果返回值为NULL,则表示发生了错误或者读取到了文件的末尾。
如果返回值不为NULL,则表示成功读取了一行字符。
c语言中fgets函数
c语言中fgets函数摘要:1.fgets 函数的作用和功能2.fgets 函数的语法和参数3.fgets 函数的使用示例4.fgets 函数的注意事项正文:fgets 函数是C 语言中的一个文本处理函数,主要用于从文件或字符串中读取一行文本,并将其保存到指定的缓冲区中。
它是C 语言标准库中的函数,因此可以在任何C 语言程序中使用。
fgets 函数的语法如下:```char *fgets(char *str, int num, FILE *stream);```其中,参数`str`是一个字符指针,用于指向要存储读取内容的缓冲区;参数`num`是一个整数,表示缓冲区的最大长度;参数`stream`是一个FILE 指针,表示要读取的文件或字符串。
fgets 函数的使用示例:```c#include <stdio.h>#include <stdlib.h>int main() {char str[100];FILE *fp;fp = fopen("test.txt", "r");if (fp == NULL) {printf("Error: cannot open file.");exit(1);}fgets(str, 100, fp);printf("%s", str);fclose(fp);return 0;}```在这个示例中,我们首先打开名为"test.txt"的文件,然后使用fgets 函数从文件中读取一行内容,并将其保存到字符数组`str`中。
最后,我们输出`str`中的内容,并关闭文件。
在使用fgets 函数时,需要注意以下几点:1.如果缓冲区长度不足以容纳读取的内容,fgets 函数会返回一个空字符串,并设置errno 为ERANGE。
2.如果文件指针`stream`为NULL,fgets 函数会返回一个空字符串,并设置errno 为EOF。
单片机中文字符串存到数组中的方法
单片机中文字符串存到数组中的方法
单片机中存储中文字符串到数组中需要考虑字符编码和存储方式。
一般来说,中文字符采用Unicode编码,每个中文字符通常占
用两个字节。
下面我将从几个方面来介绍存储中文字符串到数组中
的方法。
1. 字符编码,在单片机中,中文字符通常使用Unicode编码,
可以使用UTF-8或UTF-16编码存储。
UTF-8编码是一种可变长度的
编码方式,每个中文字符占用3个字节,而UTF-16编码是固定长度
的编码方式,每个中文字符占用2个字节。
2. 存储方式,可以将中文字符串存储到数组中,数组的每个元
素表示一个字符,根据字符编码的不同,需要占用不同的字节长度。
例如,对于UTF-8编码,每个中文字符需要3个字节,可以使用unsigned char类型的数组来存储每个字节,对于UTF-16编码,可
以使用unsigned short类型的数组来存储每个字符的编码。
3. 转换方法,将中文字符串存储到数组中需要考虑字符编码的
转换,可以使用相关的编码转换库或者手动编写转换函数来实现。
对于UTF-8编码,可以将每个中文字符转换为对应的3个字节存储
到数组中;对于UTF-16编码,可以将每个中文字符转换为对应的2个字节存储到数组中。
4. 注意事项,在存储中文字符串到数组中时,需要考虑数组的长度是否足够存储整个字符串,还需要注意数组的索引和偏移量等细节问题,确保存储的准确性和完整性。
综上所述,存储中文字符串到数组中需要考虑字符编码和存储方式,可以根据具体的需求选择合适的编码方式和存储方法,同时注意转换的准确性和数组的长度问题。
希望以上信息能够对你有所帮助。
linux c中write、read的用法
linux c中write、read的用法摘要:一、引言二、write 函数的用法1.函数原型2.功能描述3.参数说明4.返回值5.应用实例三、read 函数的用法1.函数原型2.功能描述3.参数说明4.返回值5.应用实例四、总结正文:一、引言Linux C 语言中,write 和read 是两个用于文件操作的重要函数。
它们分别用于向文件中写入数据和从文件中读取数据。
本篇文章将详细介绍这两个函数的用法。
二、write 函数的用法1.函数原型write 函数的原型为:`ssize_t write(int fd, const void *buf, size_t count);`2.功能描述write 函数用于向文件描述符为fd 的文件中写入count 个字节的数据,数据存储在buf 指向的内存区域。
3.参数说明- fd:文件描述符,表示要操作的文件。
- buf:指向要写入文件的数据缓冲区,可以是字符数组、字符指针或者字节数组等。
- count:要写入文件的字节数。
4.返回值write 函数返回实际写入的字节数,如果写入失败,则返回-1,并设置相应的错误码。
5.应用实例下面是一个简单的write 函数应用实例,用于将字符串写入文件:```c#include <stdio.h>#include <string.h>int main() {char str[] = "Hello, world!";int fd = open("output.txt", O_CREAT | O_WRONLY, 0644);if (fd < 0) {perror("open");return 1;}ssize_t ret = write(fd, str, sizeof(str));if (ret == -1) {perror("write");close(fd);return 1;}close(fd);return 0;}```三、read 函数的用法1.函数原型read 函数的原型为:`ssize_t read(int fd, void *buf, size_t count);`2.功能描述read 函数用于从文件描述符为fd 的文件中读取count 个字节的数据,数据存储在buf 指向的内存区域。
fgets在c语言中怎么用
fgets在c语言中怎么用在C语言中,fgets函数用于从指定的流中读取一行并保存到提供的缓冲区中。
其原型在stdio.h头文件中定义。
以下是fgets的基本用法:c复制代码#include<stdio.h>int main() {char buffer[100]; // 定义一个足够大的缓冲区来存储读取的行// 从标准输入(通常是键盘)读取一行if (fgets(buffer, sizeof(buffer), stdin) != NULL) {printf("你输入的是: %s", buffer);} else {printf("读取失败或达到文件末尾。
\n");}return0;}在上述示例中,fgets函数从标准输入(stdin)读取一行,并将其保存到buffer数组中。
sizeof(buffer)指定了缓冲区的最大大小,以字节为单位。
fgets会读取最多sizeof(buffer) - 1个字符,并在末尾添加一个空字符(\0)以标记字符串的结束。
如果读取成功,fgets会返回指向buffer的指针。
如果发生错误或达到文件末尾,它会返回NULL。
你还可以使用fgets从文件中读取行。
例如:c复制代码#include<stdio.h>int main() {FILE *file = fopen("example.txt", "r"); // 打开文件以进行读取if (file == NULL) {perror("打开文件失败");return1;}char buffer[100];if (fgets(buffer, sizeof(buffer), file) != NULL) {printf("文件中的第一行是: %s", buffer);} else {printf("读取失败或达到文件末尾。
c语言遍历字符串数组的方法
c语⾔遍历字符串数组的⽅法在这⾥我们重点介绍遍历字符串的三种⽅法。
⾸先我们来看⼀道编程题⽬: 输⼊⼀个字符串,且都是数字,也可以是负数,转化成相应的整型数并输出,若输⼊字母则停⽌。
我们知道,在C语⾔⾥有⼀个函数是“atoi”,它可以把字符串转换成整型数,包含在头⽂件stdlib.h中。
以下是我们使⽤了这个函数的代码。
[objc]1. #include <stdio.h>2.3. #define MAX_SIZE 10244.5. int main()6. {7. char str[MAX_SIZE] = {0};8.9. int result;10. int i;11.12. printf("Please input string : ");13. gets(str);14.15. result = atoi(str);16.17. printf("result = %d\n",result);18.19. return 0;20. }[objc]1. #include <stdio.h>2.3. #define MAX_SIZE 10244.5. int main()6. {7. char str[MAX_SIZE] = {0};8.9. int result;10. int i;11.12. printf("Please input string : ");13. gets(str);14.15. result = atoi(str);16.17. printf("result = %d\n",result);18.19. return 0;20. }运⾏结果:正数:[objc]2. result = 123456[objc]1. Please input string : 1234562. result = 123456负数:[objc]1. Please input string : -1234562. result = -123456[objc]1. Please input string : -1234562. result = -123456带字母的字符串:[objc]1. Please input string : 123a4562. result = 123[objc]1. Please input string : 123a4562. result = 123 使⽤“atoi”函数做这道题很简单,那么我们能不能⾃⼰写⼀个函数来实现把字符串转换成整型数的功能呢?下⾯是我们⾃⼰写⼀个函数来实现把字符串转换成整型数的功能的代码。
c语言从txt文件中逐行读入数据存到数组中的实现方法 -回复
c语言从txt文件中逐行读入数据存到数组中的实现方法-回复C语言是一种强大而广泛使用的编程语言,它提供了丰富的功能和灵活性。
在许多应用程序中,我们需要从外部文件中读取数据并将其存储在数组中以便进行进一步处理。
本文将介绍如何使用C语言逐行读取txt文件并将数据存储到数组中的实现方法。
在开始之前,我们需要了解一些基本的概念。
首先,txt文件是一种普通文本文件,其中的内容以纯文本形式存储,不包含特殊格式或二进制数据。
其次,数组是一种数据结构,用于存储相同类型的数据元素。
在C 语言中,我们可以使用数组来存储各种类型的数据,例如整数、字符或字符串。
接下来,让我们来看一下逐行读取txt文件并将数据存储到数组中的步骤:步骤1:打开文件在C语言中,我们首先需要使用标准库函数fopen()来打开txt文件。
此函数需要两个参数:文件名和打开模式。
文件名表示要打开的txt文件的路径和名称,而打开模式表示文件的打开方式(例如,读取、写入或追加)。
对于我们的需求,我们将使用打开模式"r"来以只读方式打开txt文件。
下面是打开txt文件并检查是否成功的示例代码:c#include <stdio.h>int main() {FILE *file = fopen("data.txt", "r");if (file == NULL) {printf("无法打开文件!\n");return -1;}代码继续...fclose(file);return 0;}在上面的示例中,我们使用fopen()函数打开了名为"data.txt"的txt文件。
然后,我们检查file指针是否为空,以确定文件是否成功打开。
如果文件打开失败,我们将打印一条错误消息并返回-1。
步骤2:逐行读取文件内容一旦我们成功打开了txt文件,我们就可以使用标准库函数fgets()来逐行读取文件的内容。
sscanf函数的返回值
sscanf函数的返回值sscanf函数是一个用于格式化输入的函数,它可以从一个字符串中按照指定格式提取数据并将其赋值给相应的变量。
这个函数的返回值表示成功读取的变量数目,或者在某些情况下表示错误的代码。
在本文中,我们将对sscanf的返回值进行详细的解释。
int sscanf(const char *str, const char *format, …);str是要被解析的字符串,format是解析字符串的格式,而省略号表示解析出的数据被赋值给相应的变量。
sscanf函数的返回值为int类型,它有三种可能的情况:1. 返回成功读取的变量数目。
当sscanf函数成功地从字符串中解析出指定格式的数据并将其赋值给相应的变量时,它会返回成功读取的变量数目。
下面的代码可以从一个字符串中解析出年龄和体重:```char str[] = "Tom is 28 years old and weighs 70kg.";int age, weight;int ret = sscanf(str, "Tom is %d years old and weighs %dkg.", &age, &weight);```在上面的代码中,如果sscanf成功执行,则它会返回2,表示成功读取了两个变量。
2. 返回0当sscanf函数没有从字符串中解析出任何数据时,它会返回0。
这可能是因为解析字符串的格式不正确,或者字符串与格式不相符。
下面的代码试图从一个字符串中解析一个整数:在上面的代码中,由于字符串中没有一个整数,因此sscanf函数将返回0。
3. 返回错误代码:EOF和-1。
在上面的代码中,由于str指向空地址,因此访问这个地址将导致程序崩溃。
所以,sscanf函数将返回-1表示错误。
sscanf函数的返回值可以用来判断解析字符串时是否成功,并帮助我们找到错误的原因。
在使用sscanf时,我们需要注意字符串与格式的匹配,以及指针的有效性等问题,以避免错误的发生。
c语言fgets用法
c语言fgets用法c语言中的fgets函数是一种用于从文件流中读取字符数组的函数。
它以指定的输入文件流文件流来获取字符串,直到达到所指定的字符数或遇到换行符为止。
fgets函数的详细用法和如何逐步使用它来读取文件将在下文中详细介绍。
在c语言中,fgets函数是一个非常有用的函数,提供了一种简单而有效的方式来读取文件中的文本内容。
它的函数原型如下所示:cchar *fgets(char *str, int count, FILE *stream);这个函数有三个参数。
第一个参数是一个字符数组(也可以说是字符串),用来存储从输入流中读取的内容;第二个参数是一个整数,代表最多读取的字符数;第三个参数是一个指向FILE类型的指针,指向要读取的文件流。
使用fgets函数前,我们需要引入stdio.h头文件,以便使用相关的文件操作函数。
首先,我们来看一个简单的示例,以说明fgets函数的基本用法:#include <stdio.h>#define SIZE 100int main() {char str[SIZE];FILE *file = fopen("test.txt", "r");if (file == NULL) {printf("Failed to open the file.\n");return 1;}while (fgets(str, SIZE, file) != NULL) { printf("s", str);}fclose(file);return 0;}在这个例子里,我们首先定义了一个大小为SIZE的字符数组,用来存储从文件中读取的内容。
然后,我们通过fopen函数打开了一个名为"test.txt"的文本文件。
如果文件打开失败,我们会输出一个提示信息并终止程序。
接下来,我们使用while循环来一行一行地读取文件中的内容,并打印出来。
c语言文件读写
c语言文件读写从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。
ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
ASCII码文件可在屏幕上按字符显示。
二进制文件是按二进制的编码方式来存放文件的。
二进制文件虽然也可在屏幕上显示,但其内容无法读懂。
C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。
输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。
因此也把这种文件称作“流式文件”。
1、文件的打开与关闭文件在进行读写操作之前要先打开,使用完毕要关闭。
所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。
关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。
在C语言中,文件操作都是由库函数来完成的。
在本章内将介绍主要的文件操作函数。
在stdio.h文件中,有结构体类型FILE。
typeof struct{ short level; /*缓冲区“满”或“空”的程度*/unsigned flags; /*文件状态标志*/char fd; /*文件描述符*/unsigned char hold; /*如无缓冲区不读取字符*/short bsize; /*缓冲区的大小*/unsigned char *buffer; /*数据缓冲区的位置*/unsigned ar *curp; /*指针、当前的指向*/unsigned istemp; /*临时文件、指示器*/short token; /*用于有效性检查*/} FILE;可以定义文件类型数组,例如:FILE f[5];可以定义文件类型指针,例如:FILE *fp;——fp指向某一个文件的结构体变量。
如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,以实现对文件的访问。
1.1 文件的打开(fopen函数)fopen()函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,“文件指针名”必须是被说明为FILE 类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求;“文件名”是字符串常量或字符串数组。
c语言cin的用法
c语言cin的用法在C语言中,cin是一个用于从标准输入读取数据的输入流对象。
它是C++语言中的输入流对象,用于接收用户输入的数据,并将其存储到指定的变量中。
在C语言中,我们通常使用scanf函数来实现类似的功能,但在C++中,cin提供了更为方便和安全的输入方式。
cin的基本用法cin是C++中的标准输入流对象,它可以接收各种类型的数据,包括整数、浮点数、字符、字符串等。
下面是cin的基本用法:#include <iostream>using namespace std;int main() {int num;cout << "请输入一个整数:";cin >> num;cout << "您输入的整数是:" << num << endl;return 0;}在上面的例子中,我们首先声明了一个整数变量num,然后使用cout输出流向用户提示输入一个整数。
接下来,使用cin输入流接收用户输入的整数,并将其存储到num变量中。
最后,使用cout输出流显示用户输入的整数。
cin的输入操作符在C++中,cin使用输入操作符>>来接收用户输入的数据。
输入操作符>>可以用于各种类型的数据,包括整数、浮点数、字符、字符串等。
下面是一些常见的输入操作符的使用示例:输入整数int num;cin >> num; // 从标准输入读取一个整数,并存储到num变量中输入浮点数float num;cin >> num; // 从标准输入读取一个浮点数,并存储到num变量中输入字符char ch;cin >> ch; // 从标准输入读取一个字符,并存储到ch变量中输入字符串char str[100];cin >> str; // 从标准输入读取一个字符串,并存储到str数组中需要注意的是,使用cin输入字符串时,它会自动在遇到空格或换行符时停止读取,因此只能读取一个单词。
c语言分割string存入数组最快的方法
c语言分割string存入数组最快的方法C语言分割string存入数组最快的方法在C语言中,分割string并将结果存入数组的问题是一个常见的情况。
本文将介绍几种最快的方法来解决这个问题。
方法一:使用strtok函数strtok函数是C语言中用于分割字符串的函数,它通过指定分隔符来将字符串分割成多个子串。
以下是使用strtok函数的示例代码:#include <>#include <>int main() {char str[] = "Hello, World! This is a test.";char delimiters[] = " .,!";char *token;token = strtok(str, delimiters);while (token != NULL) {printf("%s\n", token);token = strtok(NULL, delimiters);}return 0;}方法二:使用sscanf函数sscanf函数是C语言中用于从字符串中按照指定格式提取数据的函数。
我们可以使用它来分割字符串并将子串存入数组。
以下是使用sscanf函数的示例代码:#include <>int main() {char str[] = "Hello, World! This is a test.";char substr[20];int i = 0;while (sscanf(str + i, "%s", substr) == 1) {printf("%s\n", substr);i += strlen(substr) + 1;}return 0;}方法三:使用自定义函数除了使用库函数外,我们还可以编写自己的函数来分割字符串。
题目1下列程序的功能是将大于整数m且紧靠m的k个素数
题目1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。
请编写函数num(int m,int k,int xx[])实现函数的要求,最后调用函数readwriteDAT()把结果输出到文件out.dat中。
例如:若输入17,5,则应输出:19,23,29,31,37。
注意:部分源程序已给出。
请勿改动主函数main()和函数readwriteDAT()的内容。
--------------类型:素数。
void num(int m,int k,int xx[]) /*标准答案*/{int data=m+1;int half,n=0,I;while(1){half=data/2;for(I=2;I<=half;I++)if(data%I==0)break;if(I>half){xx[n]=data;n++;}if(n>=k)break;data++;} }题目2:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
-------------------------void jsVal() /*标准答案*/{int bb[4];int I,j,k,flag;for (I=0;I<200;I++){bb[0]=a[I]/1000; bb[1]=a[I]%1000/100;bb[2]=a[I]%100/10; bb[3]=a[I]%10;for (j=0;j<4;j++){if (bb[j]%2==0)flag=1;else{flag=0;break;}}if (flag==1){ b[cnt]=a[I];cnt++;} }for(I=0;I<cnt-1;I++)for(j=I+1;j<cnt;j++)if (b[I]<b[j]){k=b[I];b[I]=b[j];b[j]=k;}}题目3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.例如:原文:You can create an index on any field.you have the correct record.结果: n any field.You can create an indexrd.yu have the crrect rec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.-------------------类型:字符串(单词)的倒置和删除。
c语言基本的输入输出格式
C语言基本的输入输出格式1. 引言C语言是一种广泛应用于系统程序开发和嵌入式系统的高级编程语言。
在C语言中,输入和输出是程序与用户或外部设备之间进行交互的重要方式。
本文将详细介绍C语言中基本的输入输出格式,包括标准输入输出函数、格式化输入输出函数以及文件输入输出函数。
2. 标准输入输出函数C语言提供了一些标准的输入输出函数,用于从键盘读取用户输入或将输出显示在屏幕上。
2.1 printf函数printf函数用于将格式化的数据输出到标准输出设备(通常是屏幕)。
它的基本语法如下:int printf(const char *format, ...);其中,format是一个字符串,用于指定输出的格式,后面的参数是要输出的数据。
下面是一些常用的格式控制符:•%d:以十进制形式输出整数。
•%f:以浮点数形式输出。
•%c:以字符形式输出。
•%s:以字符串形式输出。
示例代码:#include <stdio.h>int main() {int age = 20;float height = 1.75;char gender = 'M';char name[] = "John";printf("Name: %s\n", name);printf("Age: %d\n", age);printf("Height: %.2f\n", height);printf("Gender: %c\n", gender);return 0;}运行结果:Name: JohnAge: 20Height: 1.75Gender: M2.2 scanf函数scanf函数用于从标准输入设备(通常是键盘)读取数据。
它的基本语法如下:int scanf(const char *format, ...);其中,format是一个字符串,用于指定输入的格式,后面的参数是用于接收输入数据的变量。
c语言基础教程-第十章------文件和读写函数
C语言基础教程文件和文件指针1.文件一般说来,文件是有序数据的集合。
程序文件是程序代码的有序集合,数据文件是一组数据的有序集合。
文件是被存放在外部存储设备中的信息。
对文件的处理过程就是面向文件的输入和输出过程。
文件的输入过程是从文件中读出信息,文件的输出过程是往文件中写入信息,文件的输入的过程使用读函数,实现文件输出的过程使用写函数。
文件的读写函数是实现文件操作的主要函数,本章将用大量篇幅来讲述文件的读写函数。
C语言文件被称为流式文件,其特点是不分记录或块,将文件看成是信息"流"或看成是一个字符流(文本文件),或看成是一个二进制流(二进制文件).文件的存取是以字符(字节)为单位的,读写数据流的开始和结束受程序控制。
任何一个文件都是以EOF结束,最简单的文件是只有结束符的空文件。
C语言文件包含有设备文件和磁盘文件,例如,键盘是一种输入信息的文件,显示器屏幕和打印机是输出信息的文件它们都属于设备文件。
将内存的信息放到磁盘上保存,需要时再从磁盘上装入内存,这就要使用磁盘文件,磁盘文件是计算机中常用的文件nC语言文件按存放设备分设备文件和磁盘文件;按数据的组织形式分为文本文件(ASCII码文件)和二进制文件。
文本文件是按一个字节存放一个字符的ASCII码来存放的;二进制文件是按数据在内存中的存储形式放到磁盘上的。
例如,有一个整数10000,在内存中按二进制形式存放,占2个字节,将它放在磁盘上如按文本文件形式存放,占5个字节,每个数位占一个字节。
两种存放方式各有利弊。
以文本文件形式输出便于对字符进行处理,也便于输出字符,但是占用存储空间较多,并且要花费转换时间。
以二进制文件形式输出可节省存储空间和转换时间,但是不能直接输出字符形式。
2.文件指针文件指针是一种用来指向某个文件的指针。
如果说某个文件指针指向某个文件,则是该文件指针指向某个文件存放在内存中的缓冲区的首地址。
每一个被使用的文件都要在内存中开辟一个区域,用来存放的有关信息,包括文件名字、文件状态和文件当前位置等。