解决将文本文件传入数据中,文件名filename获取不完整错误

it2023-04-12  74

.............................. 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; } ............................

调用一个函数时,要注意传入的参数类型,看是指针,还是整形之类的,不然会出现不可预知的错误。同级传值,不同级传址(同级,传值,只要传本身,不同级就要传地址。)

最新回复(0)