C语言如何读取文件中指定的某一段

C语言如何读取文件中指定的某一段,第1张

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

FILE *file = NULL

char szFile[1025] = {0}

int nHadRead = 0

file = fopen( "file.txt", "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)

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

不管是读取数据还是写入,R都是在工作路径中完成的。所以首先我们要知道我们的R所在的工作路径是在哪里。使用getwd()函数来获取我们的工作路径。

下面查看工作路径里面有哪些文件,使用dir()函数

如果你所想导入的数据并不在你当前的工作路径中,有两种方法可以解决。第一种就是把数据文件放到工作路径中,第二种方法就是更改工作路径。更改工作路径使用setwd()函数。比如你想要把工作路径设置成桌面

现在我读取我工作路径中,名字为hw1_data.csv的文件。使用read.csv()函数

也可以使用read.table()函数来读取csv格式的文件。由于csv文件的分隔符是“,”所以我们在用read.table()函数的时候,sep参数,我们要设定为sep=“,”

发现read.table()读出来的数据,列名并不是我们文件中的列名,而是V1,V2。。。我们需要加上header这个参数来修改这个问题

另外在read.table()函数族中还有很多参数,对我们读取数据都有帮助,大家可以去了解下。使用?read.table()进行了解

所谓的某行你没有给出确切的定义,通常读文件采用的方法是将文件内容的全部,或者部分保存在缓存中,如果你是想读取第几行,那么就可以使用字符指针,寻找缓存中的'\n',并进行计数,找到想要的行。

如果想读取的是某个关键字所在的行,同样是可以使用字符指针,使用strncmp方法寻找关键字所在的位置,或者直接使用strstr方法查找。

需求不明确的时候不容易确定最佳的查找方式。


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

原文地址: http://outofmemory.cn/tougao/7935123.html

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

发表评论

登录后才能评论

评论列表(0条)

保存