Windwos安裝Apache服務器軟件,進行測試。Localhost
將可執行程序xxx.exe改為xxx.cgi放到apache服務器上,通過浏覽器進行訪問。
#define _CRT_SECURE_NO_WARNINGS #include#include #include void main() { printf(Content-type:text/html ); printf(%s , getenv(QUERY_STRING));//打印環境變量 char szPost[256] = {0}; gets(szPost);//獲取輸入 printf(%s , szPost);//獲取輸入 //BBB=tasklist&AAA=%C7%EB%BD%F8 char *p = szPost + 4;//0,1,2,3 char *p1 = strchr(szPost, '&'); *p1 = ''; char cmd[256] = { 0 }; sprintf(cmd, %s >1.txt, p);//字符串映射 system(cmd); FILE *pf = fopen(1.txt, r); while (!feof(pf))//如果沒有到文件末尾就繼續 { char ch = fgetc(pf); if (ch == ' ') { printf( );//換行 } else { putchar(ch);//打印字符 } } }
#include#include //最寬基本基本成員,char , int,double,結構體數組都不是最寬基本成員 //結構體大小必須可以整除最寬基本成員,是最寬基本成員的整數倍 //結構體成員地址減去結構體首地址,就是偏移量,偏移量必須可以整除成員的基本類型 struct info { char c;//1 2 4 8 double sh;//1 2 4 8 char ch[9];//9 10 12 16 }; struct info1 { short sh1; //8 4 //2 int sh; //8 4 //4 char ch[19]; //16 20 //19 }; void main2() { struct info1 info11 = {10,200,123456}; printf(%p , &info11); printf(%p , &info11.sh1); printf(%p , &info11.sh); printf(%p , &info11.ch); getchar(); } void main1() { printf(%d, sizeof(struct info1)); system(pause); }
#define _CRT_SECURE_NO_WARNINGS #include#include #include struct string { char *p; int length; }; void main11() { struct string str1; str1.length = 10; str1.p =(char *) malloc(sizeof(char)* 10); strcpy(str1.p, hello); printf( str1.p=%s, str1.p);//輸出結果 struct string str2; str2.length = str1.length; str2.p = str1.p; *(str1.p) = 'k';//淺拷貝,共享內存 printf( str2.p=%s, str2.p);//輸出結果 system(pause); } void main123() { struct string str1; str1.length = 10; str1.p = (char *)malloc(sizeof(char)* 10); strcpy(str1.p, hello); printf( str1.p=%s, str1.p);//輸出結果 struct string str2; str2.length = str1.length; str2.p =(char *) malloc(sizeof(char)* 10); strcpy(str2.p, str1.p);//拷貝內存內容 *(str1.p) = 'k'; //深拷貝是拷貝內存的內容, printf( str2.p=%s, str2.p);//輸出結果 system(pause); }
//隊列.h
#include#include #define N 100 //定義隊列最大多少個 #define datatype char //定義隊列的數據類型 struct queue { datatype data[N];//保存數據的數組 int front;//數據的開頭 ,拉屎 int rear;//數據的結尾,吃進去 }; typedef struct queue Q;//給已經有的類型簡化一下 void init(Q * myqueue);//初始化隊列 int isempty(Q * myqueue);//判斷是否為空,1代表為空,0代表不為空 void enQueue(Q * myqueue, datatype num);//入隊,吃進去 datatype DeQueue(Q * myqueue);//出隊,拉屎,返回值就是拉的 void printfQ(Q * myqueue);//打印隊列所有的元素 datatype gethead(Q * myqueue);//獲取開頭的一個節點
//隊列.c
#include隊列.h void init(Q * myqueue)//初始化隊列 { myqueue->front = myqueue->rear = 0;//表示為空 } int isempty(Q * myqueue)//判斷為空 { if (myqueue->front == myqueue->rear) { return 1; } else { return 0; } } void enQueue(Q * myqueue, datatype num) { if (myqueue->rear == N) { printf(吃東西失敗); return ;//失敗 } else { myqueue->data[myqueue->rear] = num;//賦值 myqueue->rear += 1;//增加一個 } } datatype DeQueue(Q * myqueue) //拉屎的過程 { if (myqueue->front == myqueue->rear) { printf(拉屎失敗); return -1; } else { myqueue->front += 1;//拉屎 return myqueue->data[myqueue->front - 1];//返回你拉的 } } void printfQ(Q * myqueue)//打印隊列所有的元素 { printf( ); if (myqueue->front == myqueue->rear) { printf( 你的腸胃為空); } else { for (int i = myqueue->front; i < myqueue->rear;i++) { printf(%c , myqueue->data[i]);//顯示你的腸胃 } } } datatype gethead(Q * myqueue) { if (myqueue->front == myqueue->rear) { printf( 腸胃為空,無法找到你要最先拉的屎); return -1; } else { return myqueue->data[myqueue->front];//返回第一個節點 } }
//main.c
#include#include #include隊列.h void main() { Q Q1;//創建一個結構體變量 init(&Q1);//初始化 enQueue(&Q1, 'A'); printfQ(&Q1); enQueue(&Q1, 'B'); printfQ(&Q1); enQueue(&Q1, 'C'); printfQ(&Q1); enQueue(&Q1, 'D'); printfQ(&Q1); enQueue(&Q1, 'E'); printfQ(&Q1); DeQueue(&Q1); printfQ(&Q1); DeQueue(&Q1); printfQ(&Q1); DeQueue(&Q1); printfQ(&Q1); DeQueue(&Q1); printfQ(&Q1); DeQueue(&Q1); printfQ(&Q1); DeQueue(&Q1); printfQ(&Q1); system(pause); }
//字符串.h
#define _CRT_SECURE_NO_WARNINGS #include#include #include //字符串封裝,需要庫函數 //不需要庫函數 struct CString { char *p;//保存字符串首地址 int reallength;//實際長度 }; typedef struct CString mystring;//簡寫 //字符串,初始化,打印, //查找,查找字符,查找字符串 //尾部增加,(字符,字符串) //刪除(字符,字符串), //任意位置增加(字符,字符串) ////修改字符串,(字符,字符串替換) void init(mystring *string);//原封不動初始化 void initwithlength(mystring *string,int length);//開辟長度,內存清零 void initwithstring(mystring *string,char *copystring);//初始化並拷貝字符串 void printfstring(mystring *string); //打印 void backaddchar(mystring *string,char ch);//增加字符 void backaddstring(mystring *string,char*str);//增加字符串 void run(mystring *string);//執行指令 char * findfirstchar(mystring *string, char ch);//返回第一個找到的字符的地址 char * findfirststring(mystring *string, char *str);//返回第一個找到的字符串的地址 int deletefirstchar(mystring *string,const char ch);//刪除第一個找到的字符 int deletefirststring(mystring *string, char * const str);//刪除第一個找到的字符串 void addchar(mystring *string, char ch,char *pos);//任意增加字符 void addstring(mystring *string, char*str,char *pos);//任意增加字符串 void changefirstchar(mystring *string, const char oldchar, const newchar);//改變字符 void changefirststring(mystring *string, char * const oldstring, char *const newstring);//改變字符串