【问题标题】:c string tokenization questionc字符串标记化问题
【发布时间】:2009-09-25 14:33:36
【问题描述】:
char *str = malloc (14);
sprintf(str, "%s", "one|two|three");

char *token1, *token2, *token3;
char *start = str;

token1 = str;
char *end = strchr (str, '|');
str = end + 1;
end = '\0';

token2 = str;
end = strchr (str, '|');
str = end + 1;
end = '\0';

...

free(start);

因为我一直在将 str 中的字节设置为 null 以便对其进行标记,所以 free 是否可以正常工作?

【问题讨论】:

  • 最好对 malloc 和 free 使用相同的变量名。在这种情况下,对 malloc 使用“start”,然后将“str”分配给“start”的值。

标签: c string


【解决方案1】:

是的,它可以工作,free 不关心空终止在哪里。或者即使有一个。您可以将 malloc/free 用于任何类型的数据,而不仅仅是以空字符结尾的字符串。

【讨论】:

    【解决方案2】:

    free 不检查数据的内容。所以是的,这是正确的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      相关资源
      最近更新 更多