C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符

C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符,第1张

你的这个result是什么应该是个文件

编写这样的程序主要用到(1)fopen函数,用于打开文件,返回一个文件指针,fwrite函数,写入文件(也就是你要的result文件),及fclose函数,文件 *** 作完时要关闭文件指针(2)fseek函数,用于文件指针的定位,也就是将文件指针放到你要 *** 作的文件中的某个位置(3)然后用的就是fread函数,用于读取一块数据,你可以指定数据的长度,没有什么技术可言的,自己查一下这几个函数的原型就会明白了

用库函数fgetpos可以获得64位长度的值,举个例子:

FILE fp;

fpos_t filelen; //fpos_t是个宏,就是long long ,64位整数

fp = fopen("xxxxx","r");

fseek(fp, 0, SEEK_END); //移动文件指针到末尾

fgetpos(fp, &filelen); //把偏移量写入filelen

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;

}

使用fread函数读取指定长度的字符串,即使包含\n也会被读取,可以首先使用fseek定位到文件结尾,然后ftell函数返回的值就是文件的大小,这样就可以用循环多次读取文件,直到读取所有内容

FILE file = NULL;

char szFile[1025] = {0};

int nHadRead = 0;

file = fopen( "filetxt", "r+");

if ( file == NULL )

return;

fseek( file, 0, SEEK_END ); //定位到文件尾

int nLen = ftell( file ); //获取当前位置,即文件长度

fseek( file 0, SEEK_SET ); //重新定位到文件开头,准备开始读

while ( nHadRead < nLen )

{

int nRead = nLen - nHadRead >1024 1024 : nLen - nHadRead; //如果剩余小于1024字节,则读剩余字节,否则每次读取1024字节。

int nTmp = fread( szFile, 1, nRead , file );

nHadRead += nTmp;

printf( "%s", szFile );

memset( szFile, 0x0, sizeof(szFile) );

}

fclose(file);

大致过程就是这样,纯手打,没有调试过,可能有错

size=sizeof(char);

nitems=4;

其中sizeof(char)==1;

事实上int fread(void ptr,int size,int nitems,FILE stream);

读取字符数为sizenitems个字符

只要有sizenitems==4即可

也就是说有

size=1;

nitems=4;

size=2;

nitems=2;

size=4;

nitems=1;

以上就是关于C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符全部的内容,包括:C语言中 怎样读取一个文本文档中的特定位置的特定长度的字符、C语言获取文件大小 int或long int都是32位,最大为40亿 在ntfs下文件超过4GB怎、请教C语言如何提取未知长度txt文件的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9819321.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存