原来这baidu编辑器一直不知道如何规整代码,今天得到旋哥指点,总算知道了,
从word中拷贝然后粘帖到编辑中,丢人啊.
顺便贴一段代码,是c语言链接数据库和memcache的例子,主要目的是学习c如何调用第三方的库文件,
以及gcc的一些编译参数:
gcc mysql.c -I /test/mysql/include/mysql/ -I /test/libmemcacheapi/include/ -L /test/mysql/lib/mysql/ -L /test/libmemcacheapi/lib/ -lmysqlclient -lmemcache -o mysql
这命令的大体意思是载入第三方库文件和头文件,并编译成可执行程序.
gcc参数解释:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <time.h>
#include "mysql.h"
#include "memcache.h"
int main(int argc, char **argv)
{
MYSQL_RES *mysql_ret;
MYSQL_ROW mysql_row;
MYSQL mysql;
unsigned long port = 3306; //无符号长整型
unsigned int timeout = 1;
char* query = "select user from user" ;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *)&timeout);
static struct memcache* lmc;
lmc = mc_new();
if (lmc == NULL)
{
printf("new memcached error\n");
}
char *str = "str3" ;
size_t str_len ;
str_len = strlen(str);
char* val = "hello" ;
int vallen ;
vallen = strlen(val);
mc_err_filter_del(MCM_ERR_LVL_INFO);
mc_err_filter_del(MCM_ERR_LVL_NOTICE);
if (0 != mc_server_add(lmc,"localhost","11211"))
{
printf("connect memcached error\n");
mc_free(lmc);
}
char *msg = NULL ;
msg = mc_aget(lmc, str,str_len);
if (msg == NULL)
{
printf("get value empty\n");
if (0 != mc_add(lmc, str, str_len, val,vallen, 0, 0))
{
}
}
else
{
printf("%s\n",msg);
}
if (NULL != lmc)
{
mc_free(lmc);
}
if(NULL == mysql_real_connect(&mysql, "localhost","root", "", "mysql", port, NULL, 0))
{
return;
}
if (0 != mysql_query(&mysql, query))
{
mysql_close(&mysql);
return;
}
if (NULL == (mysql_ret = mysql_store_result(&mysql)))
{
mysql_close(&mysql);
return;
}
while (NULL != (mysql_row = mysql_fetch_row(mysql_ret)))
{
if (NULL != mysql_row[0])
{
printf("%s\n" , mysql_row[0] );
}
}
mysql_free_result(mysql_ret);
mysql_close(&mysql);
}