C语言读取指定行文本

当Loadrunner参数文件,每行取值文件过长且难以保存成功时,可以尝试使用读取文件行的方式取参数。

参考的函数如下:

#include  

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;        //生成0到9的随机数
    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}"));

你可能感兴趣的:(C语言)