..............................
int csp_import_crl(char *path)
{
int ret = 0;
int ret1 =0;
CSP_TEXT test; //定义变量
scanf("%s",path);//path是一个数组,不需要取首地址
memset(&test, 0x00, sizeof(CSP_TEXT));
printf("1\n");
FILE *fp = fopen(path,"r"); //打开文本文件
ret1 = access(path,F_OK); //检查是否存在
if (ret1)
return ret1;
char buf[256] = {0}; //缓冲区
memset(buf,0,sizeof(buf)); //清空缓冲区
fscanf(fp,"%s",buf); //以下出现段错误执行不了应该是path为空,文件内容在buf,但是还有path
fclose(fp);
ret = csp1_crl_save_mysql(buf,&test,path); //保存数据库,小细节:第二个参数必须为取地址&test,而不是test
if (ret)
{
return ret;
}
return ret;
}
int csp_crl_save_mysql(char *buf,CSP_TEXT *test,char *path) //内容在buf,看需要哪些参数char *path,CSP_TEXT *b12,CSP_TEXT *crl
{
char sql[1024 * 5 + 1] = {0};
int ret = 0;
ret = csp1_mysql_check_conn();
if (ret)
{
return 1;
}
strncpy(test->path, path,strlen(path));//路径有文件名字,前期没文件名,因为上面获取的path没传进test->path
strncpy(test->data,buf,strlen(buf));
printf("path is:%s\n",path); //打印为空path
printf("path1 is:%s\n",test->path);
//在此行path1检测出读取路径不完整,为kspace/test.txt,通过请教是因为上一个调用函数中的test少了取地址符&,
sprintf(sql,"insert into Crl(filename, crl, date) values('%s', '%s', now());"
, test->path,test->data);
ret = csp_mysql_exec(sql, "Crl"); //exec是执行数据库中的存储过程的
if(ret)
{
return 0;
}
return ret;
}
............................
调用一个函数时,要注意传入的参数类型,看是指针,还是整形之类的,不然会出现不可预知的错误。同级传值,不同级传址(同级,传值,只要传本身,不同级就要传地址。)