谢浩冉 2021-09-26 09:12 采纳率: 50%
浏览 35
已结题

strcpy导致c语言编译出来的so库闪退


if(psaCommandType == COMMAND_TYPE_CANCLECONSUME){
            sprintf(amt,"%012.0lf",Sumdouble);
            char filePath[128]="";
            char line[256];
            
            char a1,b1;
            char a[256][3];
            int index1 = -1;
            int index2 = -1;
            
            int l=0,i;
            
            a1 = psaAmt;
            b1 = psaSeqNo;
            
            sprintf(filePath,"%s/log/trans/trans.rcd8",ANDROID_HOME);
            FILE *fp;
            if((fp = fopen(filePath,"r")) == NULL)
            {
                printf("can't open file\n");
            }
            
            while (!feof(fp) && !ferror(fp)) {
                strcpy(line, "\n"); 
                fgets(line, sizeof(line), fp);
                DBG_PRINTF(DBG_HERE,"%s",line);
                char *arr[20];
                const char *del = "|";
                split(arr, line, del);
                      
                                //这里直接导致so库崩溃了
                strcpy(a[l][0],(char)l);
                strcpy(a[l][1],*(arr + 3));
                strcpy(a[l][2],*(arr + 5));
                DBG_PRINTF(DBG_HERE,"line:%d,amt:%s,hao:%s\n",l,a[l][1],a[l][2]);
                DBG_PRINTF(DBG_HERE,"line:%d,amt1:%s,hao1:%s\n",l,a1,b1);
                l++;
            }
            DBG_PRINTF(DBG_HERE,"bj5\n");    
            
            for(i=0;i<l;i++){
                if(strcmp(a[i][2],b1) == 0){
                    index1 = i;
                }
            }
            
            if(index1 == -1){
                //输出错误信息:匹配不到批次号
                
            }else{
                if(strcmp(a[index1][2],a1) == 0){
                    index2 = 0;
                }
            }
            
            if(index2 == -1){
                //输出错误信息:金额不正确
                
            }else{
                tmp=AssemblePackage(buff,psaSeqNo,tmp);
            }
            
            fclose(fp);
        
        }
  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-09-26 09:14
    关注

    你这不能用strcpy,就是字符赋值啊。a[l][0] = l就好了

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月26日
  • 创建了问题 9月26日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据