你的这个result是什么应该是个文件吧
编写这样的程序主要用到(1)fopen函数,用于打开文件,返回一个文件指针,fwrite函数,写入文件(也就是你要的result文件),及fclose函数,文件 *** 作完时要关闭文件指针(2)fseek函数,用于文件指针的定位,也就是将文件指针放到你要 *** 作的文件中的某个位置(3)然后用的就是fread函数,用于读取一块数据,你可以指定数据的长度,没有什么技术可言的,自己查一下这几个函数的原型就会明白了
我测试了你的代码:
#include<stdioh>#include<stringh>
#include<stdlibh>
void main()
{
FILE p=fopen("d:\\jiuibftxt","rt");
int length = 0;
for(;fgetc(p)!=EOF;length++);
fclose(p);
printf("第一种方式,文件长度=%d\n",length);
p=fopen("d:\\jiuibftxt","rb");
fseek(p,0,2);
length=ftell(p);
fclose(p);
printf("第二种方式,文件长度=%d\n",length);
}
文本文件的内容是:
FILE p=("jiuibftxt","rt");
int length;
for(;fgetc(p)!=EOF;length);
FILE p=(jiuibftxt","rb");
int length;
fseek(p,0,2);
length=ftell(p);
程序的输出是:
原因分析:
在windows下,以文本方式写入文件的\n会被转换为\r\n(也就是0x0D0A),输出的时候,\r\n会被转换回\n。
fgetc在读入时会将\r\n转换成一个\n;上面的文本文件有6个回车换行。
所以第一种方式比第二种方式少6
C语言获得文件的长度方式就是第二种:
FILEfp;fp=fopen("localfile","rb");// localfile文件名
fseek(fp,0,SEEK_SET);
fseek(fp,0,SEEK_END);
long longBytes=ftell(fp);// longBytes就是文件的长度
int fseek(FILE stream, long offset, int fromwhere):
这个函数,将文件指针stream移至以fromwhere为基准,偏移offset个字节的位置。常用的fromwhere有SEEK_SET(文件首地址,0),SEEK_CUR(文件指针当前位置, 1),SEEK_END (文件结束位置,2)。
long ftell(FILE stream):该函数返回文件指针stream相对于文件首地址的偏移字节数。
可以先利用fseek与ftell求出文件大小,再一次性进行读取。代码如下:
#include <stdioh>#include <stdlibh>
#include <stringh>
int main(void)
{
FILE fp = fopen("atxt", "r");
char str;
int len;
fseek(fp, 0, SEEK_END); //指向文件尾地址
len = ftell(fp); //计算文件长度
fseek(fp, 0, SEEK_SET); //恢复至文件指针至首地址
str = (char)malloc(len sizeof(char)); //申请文件长度的内存
if(str != NULL)
{
fread(str, len sizeof(char), 1, fp); //一次性读入
printf("%s", str);
free(str);
}
return 0;
}
以上就是关于C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符全部的内容,包括:C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符、C语言获取txt文件大小两种方法的差异、请教C语言如何提取未知长度txt文件的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)