标签:
开发中的问题:
C 字符指针数组
待测试:
1 #include <stdio.h> 2 3 int **your_function(int *pArray[]) 4 { 5 *pArray[0] = 1; 6 *pArray[1] = 2; 7 *pArray[2] = 3; 8 return pArray; 9 } 10 11 void print_array(int *pArray[]) 12 { 13 int i = 0; 14 for (; i<3; i++) 15 { 16 printf("%d ",*pArray[i]); 17 } 18 printf("\n"); 19 } 20 21 void main() 22 { 23 int a = 5, b = 4, c = 3; 24 int *array[3] = {&a,&b,&c}; 25 int **p; 26 print_array(array); 27 p = your_function(array); 28 print_array(p); 29 }
1 for(i=0;i<4;i++) 2 for(j=0;j<strlen(g_row[i]);j++) 3 if(g_row[i][j]!=‘\0‘) 4 str[k]=g_row[i][j],k++;
返回str即可。
---down 一堆带整理的‘恶心’代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<errno.h> 5 #include<sys/types.h> 6 #include<sys/socket.h> 7 #include<netinet/in.h> 8 #include <mysql.h> 9 #define DEFAULT_PORT 8000 //默认端口 10 #define MAXLINE 4096 11 #define MAX_BUF_SIZE 1024 // 缓冲区最大字节数db 12 MYSQL *g_conn; // mysql 连接db 13 MYSQL_RES *g_res; // mysql 记录集db 14 MYSQL_ROW g_row; // 字符串数组,mysql 记录行db 15 16 const char *g_host_name = "localhost"; 17 const char *g_user_name = "root"; 18 const char *g_password = "123456"; 19 const char *g_db_name = "test"; 20 const unsigned int g_db_port = 3306; 21 22 void str_echo(int sockfd); 23 //------db down 24 void print_mysql_error(const char *msg) { // 打印最后一次错误 25 if (msg) 26 printf("%s: %s\n", msg, mysql_error(g_conn)); 27 else 28 puts(mysql_error(g_conn)); 29 } 30 31 int executesql(const char * sql) { 32 /*query the database according the sql*/ 33 if (mysql_real_query(g_conn, sql, strlen(sql))) // 如果失败 34 return -1; // 表示失败 35 36 return 0; // 成功执行 37 } 38 39 40 int init_mysql() { // 初始化连接 41 // init the database connection 42 g_conn = mysql_init(NULL); 43 44 /* connect the database */ 45 if(!mysql_real_connect(g_conn, g_host_name, g_user_name, g_password, g_db_name, g_db_port, NULL, 0)) // 如果失败 46 return -1; 47 48 // 是否连接已经可用 49 //if (executesql("set names utf8")) // 如果失败 50 // return -1; 51 return 0; // 返回成功 52 } 53 54 55 char *db(char *sqlstr) { 56 char *str=(char *)malloc(sizeof(char)*30+1); 57 int i,j,k=0; 58 if (init_mysql()); 59 print_mysql_error(NULL); 60 61 char sql[MAX_BUF_SIZE]; 62 63 if (executesql(sqlstr)) 64 print_mysql_error(NULL); 65 66 g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集 67 68 /* 69 int iNum_rows = mysql_num_rows(g_res); // 得到记录的行数 70 int iNum_fields = mysql_num_fields(g_res); // 得到记录的列数 71 72 printf("共%d个记录,每个记录%d字段\n", iNum_rows, iNum_fields); 73 74 puts("id\tname\tage\tcount\n"); 75 76 while ((g_row=mysql_fetch_row(g_res))) // 打印结果集 77 printf("%s\t%s\t%s\t%s\n", g_row[0], g_row[1], g_row[2], g_row[3]); // 第一,第二字段 78 */ 79 80 // if((g_row=mysql_fetch_row(g_res))){ 81 82 g_row=mysql_fetch_row(g_res); 83 84 85 for(i=0;i<4;i++) 86 for(j=0;j<strlen(g_row[i]);j++) 87 if(g_row[i][j]!=‘\0‘) 88 str[k]=g_row[i][j],k++; 89 90 mysql_free_result(g_res); // 释放结果集 91 mysql_close(g_conn); // 关闭链接 92 return str; 93 // } 94 /* mysql_free_result(g_res); // 释放结果集 95 96 mysql_close(g_conn); // 关闭链接 97 MYSQL_ROW x={"aaa","222"}; 98 return x; 99 return EXIT_SUCCESS;*/ 100 } 101 102 //-----db up 103 104 int main(int argc, char** argv) 105 { 106 int socket_fd, connect_fd; 107 struct sockaddr_in servaddr,cliaddr; 108 char buff[MAXLINE],temp[MAXLINE]; 109 int n; 110 uint32_t len; 111 //初始化Socket 112 if( (socket_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ) 113 { 114 printf("create socket error: %s(errno: %d)\n",strerror(errno),errno); 115 exit(0); 116 } 117 //初始化 118 memset(&servaddr, 0, sizeof(servaddr)); 119 servaddr.sin_family = AF_INET; 120 servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//IP地址设置成INADDR_ANY,让系统自动获取本机的IP地址。 121 servaddr.sin_port = htons(DEFAULT_PORT);//设置的端口为DEFAULT_PORT 122 123 //将本地地址绑定到所创建的套接字上 124 if( bind(socket_fd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){ 125 printf("bind socket error: %s(errno: %d)\n",strerror(errno),errno); 126 exit(0); 127 } 128 //开始监听是否有客户端连接 129 if( listen(socket_fd, 10) == -1){ 130 printf("listen socket error: %s(errno: %d)\n",strerror(errno),errno); 131 exit(0); 132 } 133 printf("======waiting for client‘s request======\n"); 134 while(1){ 135 len=sizeof(cliaddr); 136 //阻塞直到有客户端连接 137 connect_fd = accept(socket_fd, (struct sockaddr *)&cliaddr,&len); 138 139 //向客户端发送回应数据 140 if(!fork())//进入子进程,在子进程服务终止时会给父进程发送一个SIGCHLD信号,父进程未处理,子进程进入僵死状态,必须清理僵死状态,这里牵扯Unix信号的处li. 141 { //子进程在其内部关闭监听套接字 142 close(socket_fd); 143 str_echo(connect_fd); 144 //输出客户协议信息 145 printf("\nfrom:%s,port:%d\n",(char *)inet_ntop(AF_INET,&cliaddr.sin_addr,temp,sizeof(temp)),ntohs(cliaddr.sin_port)); 146 close(connect_fd); 147 exit(0); 148 } 149 close(connect_fd); 150 } 151 close(socket_fd); 152 } 153 void str_echo(int sockfd) 154 { 155 ssize_t n; 156 char buf[MAXLINE]; 157 while(( n=read(sockfd,buf,MAXLINE))>0) 158 write(sockfd,db(buf),sizeof(char)*100); 159 //write(sockfd,db(buf),n); 160 if(n<0 && errno==EINTR) 161 perror("str_echo:red error"); 162 }
标签:
原文地址:http://www.cnblogs.com/A--Q/p/5982649.html