C语言读取指定行文本

当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}"));

好的,以下是使用 C 语言读取文本文件指定的内容并输出的代码示例: ```c #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char filename[] = "file.txt"; char buffer[100]; int line_numbers[] = {1, 3, 5}; int num_lines = sizeof(line_numbers)/sizeof(line_numbers[0]); // 打开文件 fp = fopen(filename, "r"); // 读取指定的内容并输出 for (int i = 0; i < num_lines; i++) { int line_num = line_numbers[i]; int current_line = 1; // 读取并忽略指定之前的所有 while (current_line < line_num) { if (fgets(buffer, sizeof(buffer), fp) == NULL) { printf("Error: 文件数不足。\n"); exit(1); } current_line++; } // 读取指定的内容并输出 if (fgets(buffer, sizeof(buffer), fp) != NULL) { printf("%s", buffer); } else { printf("Error: 文件数不足。\n"); exit(1); } } // 关闭文件 fclose(fp); return 0; } ``` 在这个例子,我们首先打开名为 `file.txt` 的文本文件,并声明了需要读取号列表 `line_numbers`。然后,我们遍历 `line_numbers` 的每个号,依次读取指定的内容并输出。在读取之前,我们使用一个循环来跳过指定之前的所有。如果文件数不足或读取出错,则输出错误信息并退出程序。最后,我们关闭文件并结束程序。 需要注意的是,在 C 语言,文件数是从 1 开始计数的,而不是从 0 开始。因此,在程序,我们需要将号减去 1 才能正确读取对应的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值