- 論壇徽章:
- 0
|
//程序代碼1,編譯通過(guò),運(yùn)行的時(shí)候錯(cuò)誤,運(yùn)行可以把一個(gè)xml文件解析出來(lái),但是執(zhí)行conndb()時(shí)候,老是報(bào)"段錯(cuò)誤",其實(shí)conndb()程序跟程序代碼2幾乎一樣.但是為什么運(yùn)行老是報(bào)錯(cuò)????大家能否給我看一下.
#include <stdio.h>;
#include <string.h>;
#include <stdlib.h>;
#include <libxml/xmlmemory.h>;
#include <libxml/parser.h>;
#include "libpq-fe.h"
void
parsePacket (xmlDocPtr doc, xmlNodePtr cur) {
char str[5][50];
xmlChar *key;
int i=0;
cur = cur->;xmlChildrenNode;
while (cur != NULL) {
key = xmlNodeListGetString(doc, cur->;xmlChildrenNode, 1);
if(key!=NULL)
{
printf("%s\n", key);
}
// xmlFree(key);
cur = cur->;next;
}
return;
}
static void
parseDoc(char *docname) {
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if (doc == NULL ) {
fprintf(stderr,"Document not parsed successfully. \n" ;
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr,"empty document\n" ;
xmlFreeDoc(doc);
return;
}
if (!xmlStrcmp(cur->;name, (const xmlChar *) "story" ) {
fprintf(stderr,"document of the wrong type, root node != story" ;
xmlFreeDoc(doc);
return;
}
cur = cur->;xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->;name, (const xmlChar *)"packet" )){
parsePacket (doc, cur);
}
cur = cur->;next;
}
xmlFreeDoc(doc);
return;
}
int
main(int argc, char **argv) {
char *docname;
if (argc <= 1) {
printf("Usage: %s docname\n", argv[0]);
return(0);
}
docname = argv[1];
parseDoc (docname);
conndb();
return (1);
}
int conndb()
{
PGconn *conn;
PGresult *res;
char *pghost = NULL;
char *pgport =NULL;
char *pgoptions =NULL;
char *pgtty = NULL;
char *dbname ="test";
int i = 0,t = 0,s,k;
conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbname);
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr,"Connection to database '%s' failed!\n",dbname);
return 0;
PQfinish(conn);
}
res=PQexec(conn,"insert into test_tbl values('22','22')" ;
if(PQresultStatus(res)!= PGRES_COMMAND_OK)
{
return 0;
fprintf(stderr,"insert failed" ;
}
PQfinish(conn);
PQclear(res);
return 1;
}
//------程序代碼2.編譯通過(guò),運(yùn)行也沒(méi)有問(wèn)題.因此,數(shù)據(jù)庫(kù)這邊是沒(méi)有問(wèn)題的
#include <stdio.h>;
#include <libpq-fe.h>;
int main()
{
PGconn *conn;
PGresult *res;
char *pghost = NULL;
char *pgport =NULL;
char *pgoptions =NULL;
char *pgtty = NULL;
char *dbname ="test";/**數(shù)據(jù)庫(kù)名*/
int i = 0,t = 0,s,k;
conn = PQsetdb(pghost,pgport,pgoptions,pgtty,dbname);
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr,"Connection to database '%s' failed!\n",dbname);
PQfinish(conn);
return 0;
}
//res = PQexec(conn,"SELECT * FROM test_tbl" ;
PQexec(conn,"insert into test_tbl values('11','11')" ;
PQfinish(conn);
PQclear(res);
return 0;
} |
|