您的位置:首页 > 编程语言 > C语言/C++

C语言读取指定行文本

2015-12-11 15:18 1461 查看
当Loadrunner参数文件,每行取值文件过长且难以保存成功时,可以尝试使用读取文件行的方式取参数。

参考的函数如下:

#include <stdio.h>

char * ReadSpeacialLine(int i)
{
char filename[] = "test.c"; //文件名
FILE *fp;
int WhichLine=i;             //指定要读取哪一行
int CurrentIndex=0;             //当前读取的行
char StrLine[1024];             //每行最大读取的字符数,可根据实际情况扩大
if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return NULL;
}

while (!feof(fp))
{

if (CurrentIndex==WhichLine)
{
fgets(StrLine,1024,fp);  //读取一行
printf("%s", StrLine); //输出
return StrLine;
}
fgets(StrLine,1024,fp);  //读取一行,并定位到下一行
CurrentIndex++;

//printf("%s", StrLine); //输出
}
fclose(fp);                     //关闭文件
return NULL;
}


Loadrunner中的实现如下:
以下为从一个总行数为10的文件中随机取一行的实现方法,以下内容放在Action.c中即可:

char filename[] = "trainInfo.txt"; //文件名
long file;
int WhichLine=rand()%10;        //<strong>生成0到9的随机数</strong>
int CurrentIndex=0;             //当前读取的行
char StrLine[2000];             //每行最大读取的字符数,可根据实际情况扩大

lr_output_message("WhichLine---%d",WhichLine);
//
if((file = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return NULL;
}
while (!feof(file))
{

if (CurrentIndex==WhichLine)
{
fgets(StrLine,2000,file);  //读取一行
//printf("%s", StrLine); //输出
break;
}

fgets(StrLine,2000,file);  //读取一行,并定位到下一行
CurrentIndex++;
//printf("%s", StrLine); //输出
}
fclose(file);

//printf("StrLine--%s",StrLine); //输出
lr_save_string(StrLine,"trainInfo");
//lr_output_message("trainInfo---%s",lr_eval_string("{trainInfo}"));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: