fseek的用法
C语言百问

学习C语言百问问题1:什么是分程序(复合语句)?分程序是指一对大括号{}之间的一段C语言程序。
每一个C函数的函数体都是包括在一对大括号中,switch语句所有取值情况的列举也是包括在一对大括号中,以此可以看出分程序在C语言中使用非常广泛,用户也可以根据需要自己组织分程序(更多的是程序功能的需要),它在C程序中的功能相当于一局部程序块,其间可以定义变量,这种变量称为局部变量,只能定义在分程序的开始部分,变量的有效范围是分程序内部。
如果局部变量与分程序以外的变量重名,在本分程序内部,该局部变量对外面的同名变量进行屏蔽,另外提示一点的是,一般不用分程序来保存变量,例如:#include <stdio.h>int test=5;void main( ){int test=10;void fun1( );/*-----5----*/fun1( );printf(“2--%d\n”,test);/*-----10-----*/{int test=15;printf(“3--%d\n”,test);/*-----15-----*/}}void fun1( ){printf(“1--%d\n”,test);}问题2:什么情况下用switch语句比if语句的多重嵌套更适合?如果有两个以上基于同一个数字型变量(整型变量,字符型变量,枚举类型变量等)的条件表达式,尤其是对于作为判断的数字型变量的取值很有限,且对每一个不同的取值,其所做的处理也不一样的情况,最好使用一条switch语句,这样更易于阅读各维护。
这里有两点需要注意就是,第一就是用于作为判断条件的变量一定要是数字型的,另一点就是所有的判断条件都是基于同一个数字变量,而不是多个变量。
例如:有如左下的if嵌套更适合用右下的switch语句表达。
char grade;if(grade= =‟A‟) printf(“85~100\n”); else if(grade= =‟B‟) printf(“70~84\n”); else if(grade= =‟C‟) pritnf(“60~69\n”); else if(grade= =‟D‟) printf(“<60\n”); else printf(“error\n”);switch(grade){case …A‟: printf(“85~100\n”);break;case …B‟: printf(“70~84\n”);break;case …C‟: printf(“60~69\n”);break;case …D‟: printf(“<60\n”);break;default: printf(“error”);break;}问题3:switch语句必须包含default分支吗?回答是否定的。
c++ fstream中seekg()和seekp()的用法

c++fstream中seekg()和seekp()的用法
先说一下C语言中fseek()的功能:
函数原型:int fseek(FILE*fp,LONG offset,int origin)
参数含义:fp文件指针offset相对于origin规定的偏移位置量origin 指针移动的起始位置,可设置为以下三种情况:SEEK_SET文件开始位置SEEK_CUR文件当前位置SEEK_END文件结束位置
C++中seep()和seekg()函数功能
seekp:设置输出文件流的文件流指针位置
seekg:设置输入文件流的文件流指针位置
函数原型:
ostream&seekp(streampos pos);
ostream&seekp(streamoff off,ios::seek_dir dir);
istream&seekg(streampos pos);
istream&seekg(streamoff off,ios::seek_dir dir);
函数参数
pos:新的文件流指针位置值
off:需要偏移的值
dir:搜索的起始位置
dir参数用于对文件流指针的定位操作上,代表搜索的起始位置
在ios中定义的枚举类型:
enum seek_dir{beg,cur,end};
每个枚举常量的含义:ios::beg:文件流的起始位置ios::cur:文件流的当前位置ios::end:文件流的结束位置。
C语言项目式教程项目八 使用文件存储售书记录--文件随机读写

文件位置标记的定位
可以强制使文件标记指向指定的位置,用以下函数实现: (3) 用ftell函数测定文件位置标记的当前位置 ftell函数的作用是得到流式文件中文件位置标记的当前位置。 由于文件中文件位置标记经常移动,人们往往不容易知道其当前 位置,所以常用ftell函数得到当前位置,用相对于文件开头的位移 量来表示。 如果调用函数时出错(如不存在fp指向的文件),ftell函数返回值 为-1L。 例如: i=ftell(fp); if(i==-1L) printf(“error\n”);
文件读写的出错检测
1.ferror函数 ferror函数的一般调用形式为: ferror(fp); 如果返回值为0,表示未出错,否 则表示出错 每次调用输入输出函数,都产生 新的ferror函数值,因此调用输入输 出函数后立即检查 调用fopen时,ferror的初始值自动 为0. 2.clearerr函数 作用:是使文件错误标志和文件结 束标志置为0 调用一个输入输出函数时出现错 误(ferror值为非零值),立即调用 clearerr(fp),使ferror(fp)值变0,以便再 进行下一次检测 只要出现文件读写错误标志,它 就一直保留,直到对同一文件调用 clearerr函数或rewind函数,或任何其 他一个输入输出函数。
C语言程序设计
பைடு நூலகம்文件随机读写
任务场景 期末考试结束后,老师将全班学生的《C语言 程序设计》课程的成绩存储在磁盘文件上。 现在老师要求小芳将第1,3,5,7,9号学生 数据输入计算机,并在屏幕上显示出来。
任务分析 按二进制只读方式打开文件;
将文件位置标记指向文件的开头,读入第一 个学生的信息,并把它显示在屏幕上; 再将文件标记指向文件中第3,5,7,9号学 生的数据区的开头,读入相应学生的成绩,并 把它显示在屏幕上; 关闭文件。
matlab文件操作fopen,fseek,fread,fclose等

文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。
MATLAB提供了一系列低层输入输出函数,专门用于文件操作。
1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。
fopen函数的调用格式为:fid=fopen(文件名,…打开方式‟)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。
文件名用字符串形式,表示待打开的数据文件。
常见的打开方式如下:…r‟:只读方式打开文件(默认的方式),该文件必须已存在。
λ…r+‟:读写方式打开文件,打开后先读后写。
该文件必须已存在。
λ…w‟:打开后写入数据。
该文件已存在则更新;不存在则创建。
λ…w+‟:读写方式打开文件。
先读后写。
该文件已存在则更新;不存在则创建。
λ…a‟:在打开的文件末端添加数据。
文件不存在则创建。
λ…a+‟:打开文件后,先读入数据再添加数据。
文件不存在则创建。
λ另外,在这些字符串后添加一个“t”,如…rt‟或…wt+‟,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。
关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。
sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。
如果要关闭所有已打开的文件用fclose(…all‟)。
2、二进制文件的读写操作1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。
其调用格式为:COUNT=fwrite(fid,A,precision)说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。
函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结

函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结字符串读写函数fgets和fputs一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:fgets(字符数组名,n,文件指针);其中的n是一个正整数。
表示从文件中读出的字符串不超过n-1个字符。
在读入的最后一个字符后加上串结束标志'\0'。
例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。
[例10.4]从e10_1.c文件中读入一个含10个字符的字符串。
#include<stdio.h>main(){FILE *fp;char str[11];if((fp=fopen("e10_1.c","rt"))==NULL){printf("Cannot open file strike any key exit!");getch();exit(1);}fgets(str,11,fp);printf("%s",str);fclose(fp);}本例定义了一个字符数组str共11个字节,在以读文本文件方式打开文件e101.c后,从中读出10个字符送入str数组,在数组最后一个单元内将加上'\0',然后在屏幕上显示输出str数组。
输出的十个字符正是例10.1程序的前十个字符。
对fgets函数有两点说明:1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2. fgets函数也有返回值,其返回值是字符数组的首地址。
二、写字符串函数fputsfputs函数的功能是向指定的文件写入一个字符串,其调用形式为:fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如:fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。
JAVA语言输入输出部分选择题40道

1.在Java中,下列哪个类可以用于读取文本文件的字符?o A. FileInputStreamo B. FileReadero C. BufferedReadero D. InputStreamReader答案: B解析: FileReader是Java中用于读取文本文件字符的类,它建立于文件的基础上。
2.C语言中,使用fscanf函数从文件读取数据,其返回值表示什么?o A. 成功读取的字符数o B. 文件中的总字符数o C. 成功读取的数据项的数量o D. 文件的大小答案: C解析: fscanf函数返回成功读取和转换的数据项的数量。
3.下列哪个类用于在Java中创建输出文件流?o A. FileWritero B. FileOutputStreamo C. BufferedWritero D. OutputStreamWriter答案: B解析: FileOutputStream用于在Java中创建输出文件流。
4.假设你在C语言中使用fopen函数打开一个文件,但文件不存在于指定路径,函数将返回什么?o A. 正常文件指针o B. NULLo C. 错误代码o D. 空字符串答案: B解析: 如果文件不存在或无法打开,fopen将返回NULL。
5.在Java中,FileInputStream和FileOutputStream类是用于处理哪种类型的文件的?o A. 二进制文件o B. 字符文件o C. 文本文件o D. 图像文件答案: A解析: FileInputStream和FileOutputStream是用于读写二进制文件的。
6.C语言中的fwrite函数用于将数据写入文件。
假设你有一个结构体,你如何保证其完全写入文件?o A. 使用fwrite函数并指定结构体的大小o B. 使用fprintf函数o C. 使用fputc函数o D. 使用fputs函数答案: A解析: fwrite函数可以用于写入任意类型的数据,通过指定数据的大小确保结构体完全写入。
VFP与文件操作相关的函数

VFP与文件操作相关的函数VFP提供了一些对文件进行低级操作的函数,这些函数的功能及用法为:(1)GETFILE()函数。
格式:GETFILE([<c1>])。
功能:显示“打开”对话框,供用户选定一个文件并返回文件名。
其中<c1>用于指定文件的扩展名。
例如,若显示一文件打开对话框,允许用户选择打开一个扩展名为.jpg类型的图形文件,则调用方法为:myfile=getfile("jpg")若要允许用户选择的文件类型有多种,此时可用分号将各文件扩展名进行分隔,例如,若允许用户选择打开jpg和gif类型的文件,则调用方法为:myfile=getfile("jpg;gif")(2)PUTFILE()函数。
格式:PUTFILE([<c1>])。
功能:显示“另存为”对话框,供用户指定一个文件名并返回文件名。
其中<c1>用于指定文件的扩展名。
(3) FOPEN()函数。
格式:FOPEN(<文件名>)。
功能:打开指定文件,返回文件句柄(控制号)。
(4) FCREATE()函数。
格式:FCREATE(<文件名>)。
功能:建立一个新文件,返回文件句柄(控制号)。
(5) FCLOSE()函数。
格式:FCLOSE(<文件句柄>)。
功能:将文件缓冲区的内容写入文件句柄所指定的文件中,并关闭该文件。
(6) FREAD()函数。
格式:FREAD(<文件句柄>,<字节数>)。
功能:从文件句柄所指定的文件中读取指定字节数的字符数据。
(7)FWRITE()函数。
格式:FWRITE(<文件句柄>,<c表达式>)。
功能:把<c表达式>表示的数据写入文件句柄所指定的文件中。
(8) FSEEK()函数。
格式:FSEEK(<文件句柄>,<移动字节数>[,<n>])。
c语言程序面试考试题

c语言程序面试考试题一、基础语法类。
1. 题目:写一个C程序,输出“Hello, World!”。
- 解析:- 这是C语言中最基本的程序。
在C语言中,可以使用`stdio.h`库中的`printf`函数来输出信息。
#include <stdio.h>.int main() {printf("Hello, World!\n");return 0;}2. 题目:以下代码有什么错误?#include <stdio.h>.int main() {int num = 10;if (num = 5) {printf("num is 5\n");} else {printf("num is not 5\n");}return 0;}- 解析:- 在`if`语句中,使用了`num = 5`,这是一个赋值操作而不是比较操作。
正确的应该是`num == 5`。
3. 题目:解释`static`关键字在函数内部变量声明中的作用。
- 解析:- 当`static`关键字用于函数内部变量声明时,该变量具有静态存储期。
这意味着该变量在程序的整个执行期间都存在,而不是在函数每次调用时创建和销毁。
并且,`static`变量只在第一次调用函数时初始化一次,后续调用函数时,该变量的值保留上次调用结束时的值。
例如:#include <stdio.h>.void func() {static int count = 0;count++;printf("count = %d\n", count);}int main() {func();func();return 0;}- 在这个例子中,`count`变量在函数`func`中是静态变量,第一次调用`func`时,`count`被初始化为0,然后自增为1并输出。
第二次调用`func`时,`count`不会再次初始化,而是直接使用上次的值1,然后自增为2并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fseek的用法
Fseek是C语言I/O函数库中的一员,它的主要作用是用来设置文件指针的位置。
在许多情况下,我们需要读取或写入文件中的某一段数据,而不是整个文件。
使用fseek函数,我们可以在文件中找到所需的数据并读取或写入它们。
fseek函数的定义如下:
int fseek(FILE *stream, long int offset, int whence);
它的参数如下:
stream:要操作的文件指针。
offset:指定要偏移的字节数,可以是正数、负数或零。
如果指定的是零,则文件指针不会移动。
whence:指定从哪里开始偏移。
有三个可能的值:
SEEK_SET:从文件开头偏移。
SEEK_CUR:从文件指针的当前位置偏移。
SEEK_END:从文件末尾偏移。
例如,以下代码使用fseek在文件中定位并读取4个字节的数据:
FILE *fp;
char buffer[4];
fp = fopen("file.txt", "rb"); // 以二进制读取模式打开文件
fseek(fp, 10, SEEK_SET); // 从文件开头偏移10个字节
fread(buffer, 1, 4, fp); // 读取4个字节到buffer中
fclose(fp);
在上面的代码中,首先我们使用fopen函数打开了file.txt文件。
然后,我们使用fseek函数将文件指针偏移10个字节。
最后,我们使用fread函数读取了4个字节的数据并将其存储在一个名为buffer的字
符数组中。
使用fseek函数可以很方便地读取或写入文件中的指定数据。
请注意,在使用fseek函数之前必须首先打开文件。
同时,我们也要注意内存
泄漏问题,避免在程序运行期间频繁打开和关闭文件。