Exemple #1
0
main()
{
	char *data;
	int len;
	int ret;
	int i=0;
	int flag=0;
	int digit=0;
	char **str;	

	do
	{
		printf("input length of string\n");
		scanf("%d",&len);
	}while(len<=0);
	getchar();

/*分配字符串空间*/
	ret = dynamic_create(&data,(len+1)*sizeof(char));
	if(ret!=OK)
	{
		printf("分配空间失败\n");
		return ER;
	}

/*输入字符串*/
	ret = input_str(data,len);
	if(ER==ret)
	{
		printf("赋值失败\n");
		return ER;
	}
	printf("string=%s\n",data);

/*计算数字串的个数*/	
	ret = num_count(data,&digit);
	if(ER==ret)
	{
		return ER;
	}
	printf("digit=%d\n",digit);
	
/*开辟一个指针数组*/
	ret = dynamic_create((void**)&str,digit*sizeof(char*));
	if(ER==ret)
	{
		return ER;
	}
printf("digit=%d\n",digit);
	printf("开辟指针数组成功\n");


	 str_trans(data,str);//将字符串中的数字串转置存储
	
	for(i=0;i<digit;i++)
	{
		printf("str%d=%s\n",i,*(str+i));
	}

}
Exemple #2
0
DWORD WINAPI http_do_request(void *lPtr)
{
	socket_conn* conn = (socket_conn*)lPtr;
	if(conn == 0)
		return 0;

	printf("[%08x]new connection\n", GetCurrentThreadId());
	while(1)
	{
		int keepalive = 0;
		dynamic_object * req = dynamic_create();
		if(http_read_request(conn, req) == 0)
		{
			dynamic_delete(req);
			break;
		}
		char* path = dynamic_get_string(dynamic_map_find(req, "PATH"));
		char* method = dynamic_get_string(dynamic_map_find(req, "METHOD"));
		char* connection = dynamic_get_string(dynamic_map_find(req, HTTP_HEADER_CONNECTION));
		if(connection && strcmp(connection, "keep-alive")==0)
			keepalive = 1;
		printf("[%08x]%s %s\n", GetCurrentThreadId(), method, path);

		if(strcmp(path, "/hello") == 0)
		{
			char* html = "<html><body>Hello World!</body></html>";
			int htmllen = strlen(html);
			dynamic_object * res = dynamic_create();
			dynamic_string_printf(dynamic_map_insert(res, HTTP_HEADER_CONTENT_LENGTH), "%d", htmllen);
			dynamic_set_string(dynamic_map_insert(res, HTTP_HEADER_CONTENT_TYPE), "text/html");

			http_send_response(conn, 200, res);
			write_socket(conn, html, htmllen, -1);
			dynamic_delete(res);
		}else
		{
			http_send_file(conn, req);
		}
		dynamic_delete(req);
		if(keepalive == 0)
			break;
	}

	close_socket(conn);
	printf("[%08x]close connection\n", GetCurrentThreadId());
	return 0;
}
Exemple #3
0
int InitStack(pSqStack s)
{
	int ret;
	ret = dynamic_create((void**)&(s->base),STACK_SIZE*sizeof(Elem));
	if(ER==ret)
	{
		printf("create stack err\n");
		return ER;
	}
	s->top = 0;
	s->stacksize = STACK_SIZE;
	return OK;
}
Exemple #4
0
/*init every data*/
int init_elem(pData *elem)
{
	int i;
	dynamic_create((void**)elem,SIZE*sizeof(Data));
	
	for(i=0;i<SIZE;i++)
	{
		(*elem)[i].num = EMPTY;
		(*elem)[i].par = EMPTY;
		(*elem)[i].lchild = EMPTY;
		(*elem)[i].rchild = EMPTY;
	}
}
Exemple #5
0
/*为每一个字符串分配空间*/	
int str_trans(char *data,char **str)
{
		int num=0;
		int i=0,j=0,k=0;
		int ret;

		while(*(data+i)!='\0')
		{
			if(*(data+i)>='0'&&*(data+i)<='9')
			{	
				num++;
			}
			else if(num!=0)
				 {
					ret = dynamic_create((void **)(str+j),num*sizeof(char));
					j++;
					if(ER==ret)
					{
						return ER;
					}
					i--;
					for(k=0;k<num;k++)					//逆序赋值
					{
						*(*(str+j-1)+k) = *(data+i);
						i--;
					}
					i=i+num;							//恢复i
					num = 0;
				 }
				else
					{
						num=0;
					}
			i++;
		}
		return OK;
}