首页 > 其他分享 >CAPL 按行读取 CSV 文件并切分字符串

CAPL 按行读取 CSV 文件并切分字符串

时间:2023-06-09 18:46:53浏览次数:42  
标签:char arrary string row StartIndexPos CAPL 按行 CSV out

切分字符串

首先CAPL中并没有内置的类似 C 中 strtok 的函数,有两种方法可以实现

  1. 将 strtok 封装到 CAPL DLL 中,然后调用
  2. 自己造个轮子,如下
参考:https://blog.csdn.net/qq_34414530/article/details/121209670
做了一些修改用于处理特殊的场景
int spilt_string(char input_string[],char out_string_arrary[][],char sign[])
{
    int i ;
    int debug;
    int StartIndexPos;
    char p_index[20];
    int  out_arrary_length ;

    debug = 1;

    StartIndexPos = 0;
    out_arrary_length = 1;
    p_index[0] = 0;

    do{
         StartIndexPos =   strstr_off(input_string,StartIndexPos+1,sign);
         p_index[out_arrary_length] = StartIndexPos;
         if (StartIndexPos!=-1)
             out_arrary_length ++;
    } while(StartIndexPos!=-1);

     p_index[out_arrary_length] = strlen(input_string)-1;

    for(i=0;i<out_arrary_length;i++)
    {
      if(i==0 && p_index[i+1] -  p_index[i] == 1){
        substr_cpy(out_string_arrary[i], input_string, p_index[i],  p_index[i+1] -  p_index[i], elcount(out_string_arrary[i]));
      }
      else if(i==out_arrary_length-1){
        substr_cpy(out_string_arrary[i], input_string, p_index[i]+1,  p_index[i+1] -  p_index[i], elcount(out_string_arrary[i]));  
      }
      else{
        substr_cpy(out_string_arrary[i], input_string, p_index[i]+1 ,  p_index[i+1] -  p_index[i] -1, elcount(out_string_arrary[i]));
      }

      if (debug){
       //write("serched postion:%d", p_index[i]);
       write("out_string_arrary[%d]:%s", i,out_string_arrary[i]);
      }
    }

  return out_arrary_length;
}

读取文件

主要用到的函数是自带的 openFileRead 和 fileGetString(类似C中的 fgets 按行读取)

on key 'b'{
  dword fh;
  char row[80];
  char out_string_arrary[80][80];
  long glbValue;

  fh = openFileRead("test.csv", 0);
  if(fh!=0){
    write("open file success");
    while ( fileGetString(row,elcount(row),fh)!=0 ) {
      write ("Row is: %s.",row);
      spilt_string(row,out_string_arrary,",");
    }
    fileClose (fh);
  }
  else{
    write("open file failed");
  }
}
Output:
Row is: 1,2,3,4,5
out_string_arrary[0]:1
out_string_arrary[1]:2
out_string_arrary[2]:3
out_string_arrary[3]:4
out_string_arrary[4]:5

标签:char,arrary,string,row,StartIndexPos,CAPL,按行,CSV,out
From: https://www.cnblogs.com/cokefentas/p/17470006.html

相关文章

  • pandas中的read_csv参数详解
    来自:https://blog.csdn.net/weixin_44852067/article/details/122366383,感谢作者。 pandas中的read_csv参数详解独影月下酌酒于2022-01-0715:57:29发布40866收藏204分类专栏:pandas文章标签:python数据挖掘pandas版权华为云开发者联盟该内容已被华为云开发者联盟......
  • CAPL 脚本加密
    点开CAPL编辑器点击FILE选择生成加密文件  在路径中删除源CAPL文件。生成的加密文件 ......
  • CAPL 脚本对信号收发的判断
    在CAPL脚本中,您可以使用条件语句和CAN消息的收发函数来进行信号的判断和处理。以下是一些常见的CAPL脚本语句用于信号收发的判断:1.判断消息是否收到onmessagecan_message{if(this.DLC>0)//判断接收到的消息的数据长度是否大于0{//执行处理接收到消息的代......
  • CAPL 脚本基本语句
    CAPL(CommunicationAccessProgrammingLanguage)是一种用于汽车通信网络分析和仿真的脚本语言。以下是CAPL脚本的基本语句:1.变量声明variables{intvariable1;//整数类型变量声明floatvariable2=3.14;//浮点数类型变量声明并初始化messagevariable3;//CAN......
  • Mysql Workbench的CSV数据导入
    首先新建一个数据库和要从.csv导入数据的表,注意数据格式的选取。然后将csv文件用NOTEPAD++打开,将文件格式转换为UTF8.转化完成即可关闭。在MysqlWorkbench中想要导入数据的表,右键选取TableDataImportWizard进入数据导入向导,在文件路径中找到csv文件,下一步。选择Useex......
  • CSV文件ASCI编码格式转UTF-8
    1.将CSV文件中的文本内容复制到wps表格中→保存文件为csv文件格式。2.用记事本打开csv文件→另存为→“编码”选项下拉选择“UTF-8”→保持文件类型不变保存。另外,高版本的Microsoftofficeexcel似乎可以直接通过另存的方式实现UTF-8转码,如果有这个软件也可以试试。......
  • Laravel-Excel 导出csv文件 中文乱码处理
    Laravel-Excel导出csv文件中文乱码处理标签(空格分隔):未分类文档地址【https://docs.laravel-excel.com/3.1/exports/settings.html】实现WithCustomCsvSettings接口,或者增加配置文件`excel.php`namespaceApp\Exports;useMaatwebsite\Excel\Concerns\WithCustomCsvSet......
  • csv
    1、介绍CSV,Comma-SeparatedValues。是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。主要存储表格形式的文本数据。2、语法一般,以\n分隔区分不同数据行,以,分隔区分不同数据列如果存在标题行,则在首行进行声明\n和,是关键字符,一般并不能直接作为内容字符表达......
  • python基础学习-读写CSV文件
    CSV文件介绍参考:Python-Core-50-Courses/第23课:用Python读写CSV文件.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)CSV 全称逗号分隔值文件是一种简单、通用的文件格式,被广泛的应用于应用程序(数据库、电子表格等)数据的导入和导出以及异构系统之间的数据......
  • Python 读取CSV
    importcsvdefparseCSVFileStr(data):"""将csv转换为[{},{},{},{},{},{},]形式的列表"""titleFlag=0ldata=[]ltitle=[]data=data.replace('"','')forrowindata.spli......