您的位置:首页 > 其它

LoadRunner文件操作函数详解

2015-09-10 11:34 295 查看
涉及的函数汇总:

文件的打开操作 fopen 打开一个文件

文件的关闭操作 fclose 关闭一个文件

文件的读写操作 fgetc 从文件中读取一个字符

         fputc 写一个字符到文件中去

         fgets 从文件中读取一个字符串

         fputs 写一个字符串到文件中去

         fprintf 往文件中写格式化数据

         fscanf 格式化读取文件中数据

         fread 以二进制形式读取文件中的数据

         fwrite 以二进制形式写数据到文件中去

文件状态检查函数 feof 文件结束

         ferror 文件读/写出错

#文件的打开

定义:按指定的方式打开文件

函数形式:long fopen( const char *filename, const char *access_mode );



功能说明:

按照access_mode指定的模式,打开由filename指定的文件,若找不到指定文件,则按以下方式之一处理:

若access_mode指定为按写方式打开文件,则就按filename指定的文件名创建新文件

若access_mode指定为按读方式打开文件,就会产生错误

打开文件的作用:

分配给打开文件一个long类型的文件变量,并将有关信息填入该变量

开辟一个缓冲区

调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件

返回值:

正常返回:指向打开文件的指针

异常返回:空指针NULL,表示打开文件操作失败

#文件的关闭

定义:关闭文件

函数形式:int fclose( FILE *file_pointer );

功能说明:关闭由file_pointer指向的文件,释放由file_pointer指定的文件类型指针

返回值:

正常返回:0

异常返回:EOF,表示文件在关闭时发生错误

示例:
Action()
{
long file_stream;
char *filename = "f:\\readme.txt";
// Open the file with read access
if ((file_stream = fopen(filename, "r")) == NULL) {
lr_error_message ("打开 %s 文件时失败", filename);
return -1;
}
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}


#文件的读写操作

从文件中读取一个字符

函数形式:int fgetc( FILE *file_pointer );

功能说明:从指向文件的指针file_pointer中读取一个字符。

返回值:

正常返回:返回读取的字符代码。

异常返回:如果到达文件的末尾或者读取时发生错误,则返回EOF。

示例:
#define NUM_CHARS 3
Action()
{
long file_stream;
char buffer[100],ch;
int i,total=0;
char *filename = "f:\\readme.txt";
// Open the file with read access
if ((file_stream = fopen(filename, "r")) == NULL) {
lr_error_message ("打开 %s 文件失败", filename);
return -1;
}
for (i=0;(i<NUM_CHARS)&&(feof(file_stream)==0);i++) {
ch=fgetc(file_stream);
buffer[i]=ch;
}
buffer[i]=NULL;
lr_error_message("First %d characters of file %s are \"%s\"",NUM_CHARS,filename,buffer);
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}

output:
Starting action Action.
Action.c(27): Error: First 3 characters of file f:\readme.txt are "loa"
Ending action Action.


写一个字符到文件中去

函数形式:int fputc( int c, FILE *file_pointer );

功能说明:向指向文件的指针file_pointer中写入一个字符。

返回值:

正常返回:返回写入的字符代码。

异常返回:如果发生错误,则返回EOF。

示例
Action()
{
long file_stream;
char *p,str[]="this is the first line of the log file";
int c;
char *filename = "f:\\logfile.txt";
// Create a new file
if ((file_stream = fopen(filename, "w+")) == NULL) {
lr_error_message ("创建 %s 文件失败", filename);
return -1;
}
//p指向字符数组str的第一个字符
p=str;
while ((*p!=NULL)&&fputc(*(p++),file_stream)!=-1);
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}


从文件中读取一个字符串

函数形式:char *fgets( char *string, int maxchar, FILE *file_pointer );

功能说明:从指向文件的指针file_pointer中读入一个字符串。

返回值:

正常返回:返回读取的字符串。

异常返回:如果到达文件的末尾或者读取时发生错误,则返回空指针。

示例:
Action()
{
int i, total = 0;
char line[22],ch;
long file_stream;
char *filename = "f:\\readme.txt";
// Open the file with read access
if ((file_stream = fopen(filename, "r")) == NULL) {
lr_error_message ("打开 %s 文件失败", filename);
return -1;
}
// Get the first line from the file
if (fgets(line, 22, file_stream) == NULL)
lr_output_message("fgets error");
else
lr_output_message( "The first line is \"%s\"", line);
if (fclose(file_stream))
lr_error_message("Error closing file %s", filename);
return 0;
}

output:
Starting action Action.
Action.c(31): The first line is "loadrunner9.5破解方法"
Ending action Action.


写入一个字符串到文件中去

函数形式:int *fputs( char *str, FILE *file_pointer );

功能说明:向指向文件的指针file_pointer中写入一个字符串。

返回值:

正常返回:返回写入的字符串。

异常返回:如果发生错误,则返回EOF。

示例:
Action()
{
long file_stream;
char str[]="this is the first line of the log file";
char *filename = "f:\\logfile.txt";
// Create a new file
if ((file_stream = fopen(filename, "w+")) == NULL) {
lr_error_message ("创建 %s 文件失败", filename);
return -1;
}
fputs(str,file_stream);
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}


向文件中写入格式化数据

函数形式:int fprintf( FILE *file_pointer, const char *format_string [, args ] );

功能说明:向指向文件的指针file_pointer中写入格式化数据。

返回值:

正常返回:返回写入的字符总数。

异常返回:如果发生错误,则返回负数。

示例:
Action()
{
long file_stream;
int id;
char *groupname;
char *filename = "f:\\logfile.txt";
// Create a new file
if ((file_stream = fopen(filename, "w+")) == NULL) {
lr_error_message ("创建 %s 文件失败", filename);
return -1;
}
//返回虚拟用户的信息
lr_whoami(&id,&groupname,NULL);
fprintf(file_stream,"log file of virtual user ID: %d group: %s\n",id, groupname);
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}


写入数据如下图:



以二进制形式读取文件中的数据

函数形式:size_t fread( void *buffer, size_t size, size_t count, FILE *file_pointer );

功能说明:从指向文件的指针file_pointer中读取非格式化数据,保存至缓冲区buffer。

返回值:

正常返回:返回实际读取数据块的总数。

异常返回:如果读取的数据块个数与请求的数量不一致,则说明发生了错误,返回值0。此时可用feof()和ferror()来跟进出现了什么问题。



Action()
{
long file_stream;
int count, total = 0;
char buffer[1000];
char *filename = "f:\\logfile.txt";
// Create a new file
if ((file_stream = fopen(filename, "r")) == NULL) {
lr_error_message ("打开 %s 文件失败", filename);
return -1;
}
// Read until end of file
while (!feof(file_stream)) {
// Read 1000 bytes while maintaining a running count
count = fread(buffer, sizeof(char), 1000, file_stream);
lr_output_message ("%3d bytes read", count);
if (ferror(file_stream)) { /* Check for file I/O errors */
lr_output_message ("Error reading file %s", filename);
break;
}
total += count; // Add up actual bytes read
}
// Display final total
lr_output_message ("Total number of bytes read = %d", total );
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}

output:
Starting action Action.
Action.c(28):  44 bytes read
Action.c(44): Total number of bytes read = 44
Ending action Action.


以二进制形式写数据到文件中去

函数形式:size_t fwrite( const void *buffer, size_t size, size_t count, FILE *file_pointer );

功能说明:从缓冲区中读取非格式化数据,保存至指向文件的指针file_pointer中。

返回值:

正常返回:返回实际写入数据块的总数。

异常返回:如果发生错误,返回值0。



struct student_data {
int student_id;
unsigned char marks[10];
};
Action()
{
long file_stream;
int i;
struct student_data sd;
char *filename = "f:\\logfile.txt";
// Create a new file
if ((file_stream = fopen(filename, "w+")) == NULL) {
lr_error_message ("创建 %s 文件失败", filename);
return -1;
}
sd.student_id = 1001;
// Set the marks of student 1001
for (i = 0; i < 10; i++)
sd.marks[i] = (unsigned char)(85 + i);
// Write student record to the file
i = fwrite(&sd, sizeof(struct student_data), 1, file_stream);
if (i > 0)
lr_output_message ("Successfully wrote %d record", i);
if (fclose(file_stream))
lr_error_message ("文件 %s 关闭时出错", filename);
return 0;
}


写入数据如下图:



#文件状态检查

文件结束检查

函数形式:int feof( FILE *file_pointer );

功能说明: 检查文件是否已到结尾。

返回值:

0:假值,表示文件未结束。

1:真值,表示文件结束。

文件读\写出错检查

函数形式:int ferror( FILE *file_pointer );

功能说明: 检查由file_pointer 指定的文件在读写时是否出错。

返回值:

0:假值,表示无出错。

1:真值,表示有出错。

参考资料:C语言文件操作详解 /article/5018845.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: