📄 main.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 + -