arrays - CAPL - 用逗号分隔字符串并设置在矩阵中

标签 arrays string capl

我有一个从文本文件中获得的字符串,我想将其与逗号分隔,并将每个项目设置在数组中。我对如何编写此代码有一个总体想法,但我想确保没有任何更简单的方法可以做到这一点。 有一个函数可以做到这一点吗?我想要类似于 python 中 split() 的东西,以便在 CAPL 中使用。

之前

char dataString[200] = "MAX_VOLT,  MAX_CURR,  MAX_TIME,  TEMP,  A0_MAX";

之后

char dataArray[5][50] = {"MAX_VOLT","MAX_CURR","MAX_TIME","TEMP","A0_MAX"};

最佳答案

我实现了一个最小的 CAPL 脚本来测试我的想法:

variables {
  char dataString[200] = "MAX_VOLT,  MAX_CURR,  MAX_TIME,  TEMP,  A0_MAX";
  long pos1, pos2, pos3, pos4, pos5;
  char dataArray[5][50];
}

on start {
  int i;

  pos1 = strstr(dataString, ",");
  pos2 = strstr_off(dataString, pos1+1, ",");
  pos3 = strstr_off(dataString, pos2+1, ",");
  pos4 = strstr_off(dataString, pos3+1, ",");
  pos5 = strlen(dataString);
  write("pos1 = %d, pos2 = %d, pos3 = %d, pos4 = %d, pos5 = %d", pos1, pos2, pos3, pos4, strlen(dataString));

  // get first string 
  for (i = 0; i < pos1; i++) {
    dataArray[0][i] = dataString[i];
  }
  // get second string 
  for (i = 0 ; i < pos2 - pos1 - 3; i++) {
    dataArray[1][i] = dataString[i + pos1 + 3];
  }
  // get third string 
  for (i = 0 ; i < pos3 - pos2 - 3; i++) {
    dataArray[2][i] = dataString[i + pos2 + 3];
  }
  // get fourth string 
  for (i = 0 ; i < pos4 - pos3 - 3; i++) {
    dataArray[3][i] = dataString[i + pos3 + 3];
  }
  // get fifth string 
  for (i = 0 ; i < pos5 - pos4 - 3; i++) {
    dataArray[4][i] = dataString[i + pos4 + 3];
  }

  write("%s", dataArray[0]);
  write("%s", dataArray[1]);
  write("%s", dataArray[2]);
  write("%s", dataArray[3]);
  write("%s", dataArray[4]);
}

输出:

CAPL    pos1 = 8, pos2 = 19, pos3 = 30, pos4 = 37, pos5 = 46
CAPL    MAX_VOLT
CAPL    MAX_CURR
CAPL    MAX_TIME
CAPL    TEMP
CAPL    A0_MAX

关于arrays - CAPL - 用逗号分隔字符串并设置在矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46693552/

相关文章:

javascript - 如何在 JavaScript 中将 1's and 0' 的数组转换为 ByteArray 或 Integer

c - 这个从输入中读取数字的函数如何工作?

string - 在 Rust 中将 Vec<String> 转换为 &str 的一部分?

CAPL 类型定义 bool

c++ - 数组,*ptr 或 **ptr C++

c - Struct realloc 内的动态字符串数组

python - 如何从 Python 3.x 调用 CAPL 通用函数?

c - 如何在 CAPL 中包含 .dll 文件?

c - 将指针的值分配给二维数组

java - 用字符串替换字符串中的特定字符?