⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 本人编写的利用XML来测试多个API接口函数的程序
💻 C
字号:
#include <stdio.h>#include "xml.h"#include "table.h"#define MAX_INPUT  128//***************************************************************************void usage(char* procname){	fprintf(stderr,"\nusage: %s flag [filename]\n",procname);	fprintf(stderr,"flag [auto | manual | random]\n\n");	exit(1);}//***************************************************************************int manual(struct xml* myxml,char*value,int len){	int layer = 0,size,style = 0;	char input[MAX_INPUT],prop[32];	//////////////////////////////	layer = 1;	memset(input,0,MAX_INPUT);	memset(value,0,len);	getcurrentpath(myxml,value,len);	fprintf(stderr,"%s#please select function(s),or \"children\" to get children list:",value);  	fgets(input,MAX_INPUT,stdin); 	size = strlen(input);	input[size - 1] = '\0';		while(strcmp(input,"q"))	{		if(!strcmp(input,"children"))		{			getchildren(myxml);		}		else if(!strcmp(input,"up"))		{			if(layer == 1)				fprintf(stderr,"error: this is top\n");			else			{				if(movetoparent(myxml) >=0)					layer--;			}		}		else if(!strcmp(input,"order") && (layer == 2))		{			if(movetofirstchild(myxml) < 0)			{				fprintf(stderr,"error: current element %s has no children!\n",myxml->current->name);				goto nextloop;			}			while(myxml->current)			{				fprintf(stderr,"%s",myxml->current->name);				callfunc(1,myxml->current->value);				if(movetonextbrother(myxml) < 0)				{					movetoparent(myxml);					break;				}			}		}		else if(movetochild(myxml,input) >= 0)		{			layer++;			if(layer == 2)			{				memset(prop,0,32);				getcurrentproperty(myxml,"style",prop,32);				style = atoi(prop);			}			else if(layer == 3)			{				callfunc(style,myxml->current->value);				if(movetoparent(myxml) >=0)					layer--;			}		}		else		{			fprintf(stderr,"error: move to child %s error!\n",input);//			call_func(input,input);		}nextloop:				memset(input,0,MAX_INPUT);		memset(value,0,len);		getcurrentpath(myxml,value,len);		if(layer == 1)		{			fprintf(stderr,"%s#please select function(s):",value); 		}		else if(layer == 2)		{			fprintf(stderr,"%s#please select test example or \"up\" to up layer:",value);		}		fgets(input,MAX_INPUT,stdin);		size = strlen(input);		input[size - 1] = '\0';	}	return 0;}//***************************************************************************int random_test(){	char input[512];	int size;		memset(input,0,512);	fprintf(stderr,"Please input test example:");	fgets(input,512,stdin);	size = strlen(input);	input[size - 1] = '\0';	while(strcmp(input,"q"))	{		callfunc(1,input);		memset(input,0,512);		fprintf(stderr,"Please input test example:");		fgets(input,512,stdin);		size = strlen(input);		input[size - 1] = '\0';	}	return 0;}//***************************************************************************int main(int argc, char* argv[]){	int flag;	char* filename = NULL;	struct xml* myxml = NULL;	char value[512];	/////////////////////////	if(argc == 2)	{		if(!strcmp(argv[1],"random"))			flag = 2;		else			usage(argv[0]);	}	else if(argc == 3)	{		filename = argv[2];		if(!strcmp(argv[1],"auto"))			flag = 0;		else if(!strcmp(argv[1],"manual"))			flag = 1;		else if(!strcmp(argv[1],"random"))			flag = 2;		else			usage(argv[0]);	}	else		usage(argv[0]);	//////////////////////////////	if(flag == 2)	{		random_test();	}	else	{		if(!(myxml = readxmlfile(filename)))		{			fprintf(stderr,"error: read xml file %s failed!\n",filename);			exit(1);		}		if(parsexmlfile(myxml) < 0)		{			fprintf(stderr,"error:parse xml file failed!\n");			exit(1);		}		fprintf(stderr,"parse xml file success!\n");		movetoroot(myxml);		///////////////////////////////////////		if(flag == 1)			manual(myxml,value,512);		else if(flag == 0)		{			fprintf(stderr,"error: no auto flag!\n");			exit(1);			}		closexml(myxml);			fprintf(stderr,"close xml success!\n");	}	////////////////////////////////////////////	fprintf(stderr,"Quit the test!\n");	return 0;}/*		char* func =  "mytest1(\"hello    fnwan\n\");";	char* func1 = "mytest2(358);";//	char* func2 = "mytest3(358,\"hello test3\");";	if(callfunc(func) < 0)		fprintf(stderr,"call function %s failed!\n",func);	if(callfunc(func1) < 0)		fprintf(stderr,"call function %s failed!\n",func);*//*	traversalxml(myxml);		fprintf(stderr,"traversal xml success!\n");*//*	movetochild(myxml,"protocol_init");	memset(value,0,512);	getcurrentproperty(myxml,"ggg",value,512);	fprintf(stderr,"property name style value:%s\n",value);*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -