读书人

txt文件中每行一个数据要读第n行

发布时间: 2013-03-17 13:48:31 作者: rapoo

txt文件中,每行一个数据,要读第n行,怎么办?
txt文件中,每行一个数据,要读第n行,怎么办?
[解决办法]
直接循环的用fscanf以%d的格式读取就好。
[解决办法]
那就用fgets函数读取。

引用:
引用:直接循环的用fscanf以%d的格式读取就好。
要是每行都是字符串呢?

[解决办法]

std::ifstream ifs("in.txt");
typedef std::string target_type;//换成你需要类型
int n = 10;
target_type v;
while(n &7 ifs >> v)
{
//do any thing using v
}

[解决办法]
循环读不行嘛?
[解决办法]
仅供参考
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char ln[MAXLEN];
FILE *f;
int i,z;
int b,n,L;
int main(int argc,char **argv) {
if (argc<2) {
printf("Usage:%s fullpathfilename.ext\nget total blank/non-blank/total linenumbers.\n",argv[0]);
return 1;
}
f=fopen(argv[1],"r");
if (NULL==f) {
printf("Can not open file [%s]!\n",argv[1]);
return 2;
}
z=0;
b=0;
n=0;
L=0;
while (1) {
if (NULL==fgets(ln,MAXLEN,f)) break;
L=strlen(ln);
if ('\n'==ln[L-1]) {
if (0==z) {
for (i=0;i<L-1;i++) {
if (!(' '==ln[i]
[解决办法]
'\t'==ln[i])) break;
}
if (i<L-1) z=1;//当前行不是空行
}
if (0==z) b++; else n++;
z=0;
} else {
if (0==z) {
for (i=0;i<L;i++) {
if (!(' '==ln[i]
------解决方案--------------------


'\t'==ln[i])) break;
}
if (i<L) z=1;//当前行不是空行
}
}
}
fclose(f);
if (L>0 && '\n'!=ln[L-1]) {
if (0==z) b++; else n++;//最后一行末尾无'\n'也计算
}
printf("File:[%s] total blank/non-blank/total linenumbers is %d/%d/%d\n",argv[1],b,n,b+n);
return 0;
}


[解决办法]
一行一行的读取,直接用fseek是不容易计算长度的。

引用:
引用:那就用fgets函数读取。

引用:引用:直接循环的用fscanf以%d的格式读取就好。
要是每行都是字符串呢?
比如第十行,直接读第十行,怎么跳过去?fseek?

[解决办法]
你就老老实实一行一行读罢
[解决办法]
楼主好人,求楼主发妹纸
[解决办法]
文件都是顺序处理的,所以你本身的算法要好。

又或者采用二进制格式或者类似二进制格式,比如每行长度相等,这样才可以随机处理,用fseek跳来跳去。

读书人网 >C++

热点推荐