LoadRunner 脚本学习 -- 读取文件内容
随便创建个txt文档 输入点内容,例如

读取文件内前N个字符:
Action() { long myfile; int count, total=0; char buffer[50]; char *filename = "E:\\kkk.txt"; if((myfile=fopen(filename,"r"))==NULL) { lr_error_message("%s文件不能打开",filename); return -1; } while(!feof(myfile)) { count = fread(buffer,sizeof(char),5,myfile); total = total + count; if(total>=5) { fclose(myfile); lr_output_message("前5个字符为%s",buffer); break; } } return 0; }
LR不支持FILE类型。
fread 函数返回一个整形,表示读取了多少个字符。
取前6行,每行取前5个字符:
(感谢 朱杰 对以下代码指导)
Action() { char buffer[1024]; char head[10]; int n=1; long myfile; char *filename = "E:\\kkk.txt"; if((myfile = fopen(filename,"r"))==NULL) { lr_error_message("文件%s不能打开",filename); return -1; } while(!feof(myfile)&&n<=6) { fgets(buffer,1024,myfile); strncpy(head,buffer,5); lr_output_message("%s文件第%d行的前5个字符为:%s",filename,n,head); n++; } fclose(myfile); return 0; }
fgets(存哪个字符数组,几位,从哪个文件取),整行取,根据循环一行行往下取
strncpy(存哪个字符数组,从哪个字符数组copy字符,几位)
取前6行,每行从第3个字符开始取5个字符:
while(!feof(myfile)&&n<=6) { fseek(myfile,2,1); fgets(buffer,1024,myfile); strncpy(head,buffer,5); lr_output_message("%s文件第%d行的5个字符为:%s",filename,n,head); n++; } fclose(myf
fseek函数 操作文件 (文件参数,偏移量,1为指针当前位置) ,从3个开始,那就偏移2。 1为指针当前位置,0为文件开始,2为文件结束。
取前6行,每行取末尾5个字符:
通过指针位移来满足需求
while(!feof(myfile)&&n<=6) { fgets(buffer,1024,myfile); strncpy(head,buffer+strlen(buffer)-6,5); lr_output_message("%s文件第%d行的5个字符为:%s",filename,n,head); n++; }
buffer+strlen(buffer)-6 : 先用strlen取buffer的长度,然后正位移这个长度,但行为换行符,再-6,负位移6位,就指向每行末尾第5个字符了。高大上。

浙公网安备 33010602011771号