【问题标题】:create an array of char arrays创建一个 char 数组
【发布时间】:2013-06-19 07:19:07
【问题描述】:

如果我有 5 个这样的 char 数组

char a[6] = "";
char b[6] = "";
char c[6] = "";
char d[6] = "";
char e[6] = "";

我也有这部分代码,它使用 strtok 获取一些标记并将它们放在 a,b,c,d,e 中

while(fgets(buff, sizeof(buff), fp) != NULL)
 {
    fputs(buff,stdout);
    FILE *ft = fopen("/home/pi/Desktop/data.txt","a+");
    struct tm *tp;
    time_t t;
    char s[80];
    t = time(NULL);
    tp = localtime(&t);
    strftime(s, 80, "%d/%m/%Y  %H:%M:%S", tp);
    char *pos = strchr(buff,'N');
    if (pos)
    {
         ptr = strtok(buff, "Nodo_,=:V()");
         i = 0;
       while (ptr != NULL)
         {
          if (i == 0)
             strcat(a, ptr); 
          if (i == 2)
             strcat(b, ptr); 
          if (i == 4)
             strcat(c, ptr); 
          if (i == 6)
             strcat(d, ptr); 
          if (i == 8)
             strcat(e, ptr); 
          ptr = strtok(NULL, "Nodo_,=:V()");
          i++;
         }
      printf("Results: %s, %s, %s, %s, %s\n", a, b, c, d, e);

我的问题是如何使用这 5 个值创建一个新数组(例如 TABLE)

a
b
c
d
e

其次有没有办法把这个数组转换成

a b c d e

【问题讨论】:

  • 我不明白你的问题。
  • 也许您在谈论 char 指针数组??
  • 我更新了我的问题
  • 我也不懂这个问题?是关于内存布局的吗?或者关于这些值是如何打印到屏幕上的?
  • 好的,我想将这些值 a,b,c,d,e 垂直保存在一个数组中。另一个问题是我的教育如何将数组转换为 5x1 到 1x5。

标签: c arrays


【解决方案1】:

不清楚你想要什么,但这里有一个镜头:

char (*TABLE_5x1[5][1])[6] = {
    { &a },
    { &b },
    { &c },
    { &d },
    { &e }
};

char (*TABLE_1x5[1][5])[6] = {
    { &a, &b, &c, &d, &e }
};

【讨论】:

  • 如果我也有 &f &j 我会这样做 char (*TABLE_1x5[1][7])[8]= {{ &a, &b, &c, &d, &e, &f, &j }};
  • @dali1985:只要每个都是char[8],你可能还应该重命名变量名以匹配新的大小。
  • 感谢您的回答。最后一个问题,以您的方式,如果我希望 &e 将其更改为 0,我该如何声明它?像这样的 '0'?
  • 如果我理解正确,你会这样做TABLE_1x5[0][4] = 0;
【解决方案2】:

定义char* TABLE[5]。然后你可以把 a,b,c...作为它的元素放入这个数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多