c语言怎样改变文档位置
比如说我用fopen函数打开了一个txt文件,现在要切换位置到第八行,我该怎么做?
使用read每次读取一个student结构体,判断id是否相等,如果相等则重新赋值,文件偏移量后退sizeof(student)大小,写入新结构体即可。read读文件时,文件偏移是随时更新的,所以要从当前位置后退一个结构体大小。lseek的用法:
1off_t lseek(int handle, off_t offset, int fromwhere);handel:文件描述符,open的返回值offset:偏移大小,正数向后偏移,负数向前偏移fromwhere:偏移的起始点,系统变量:SEEK_CUR(当前)、SEEK_SET(文件头)、SEEK_END(文件尾)当然用fseek也可以,这里我就不写了,对应的是:fopen、fread、fwrite、fseek
fgets()函数每次最多读取一行数据,若是到达行尾就会停止读取,并换行。
而文本文档里一行50个字符左右
则有
for(int i=0;i<9;i++)
{fgets(NULL,101,*fp)//请自己将*fp更换为当前的文件指针}
通过设置目标文件路径,可以改变文件的存放位置。
1、c语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的c语言教程都有文件操作一章,可以找本教材进一步学习。
2、例程:
#include<stdio.h>
int a;
char b,c[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
fscanf(fp1,"%d",&a);//从输入文件读取一个整数
b=fgetc(fp1);//从输入文件读取一个字符
fgets(c,100,fp1);//从输入文件读取一行字符串
printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
fputs(c,fp2);//向输出文件写入一行字符串
fputc(b,fp2);//向输出文件写入一个字符
fprintf(fp2,"%d",a);//向输出文件写入一个整数
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}
下一篇:如何回答问题?