在C ...模拟可附加数组有点

时间:2015-05-16 16:25:13

标签: c string

我正在尝试编写一个C代码来完成我编写的一大块python代码。

我试图保持所有的线条简单,但仍然有一些我写的东西,C不能做。

我的代码将采用一系列坐标,并随着时间的推移替换/添加项目到该数组。

例如:

[[[0,1]],[[2,1],[1,14]],[[1,1]]] ==> [[[0,1]],[[2,1],[1,14],[3,2]],[[1,1]]]

[[[0,1]],[[2,1],[1,14]],[[1,1]]] ==> [[[0,1]],[[40]],[[1,1]]]

我认为在C中这是不可能的,但是如何使用字符串来表示列表以便将它们添加到?像这样:

[['0$1$'],['2$1$1$14$'],['1$1$']] ==> [['0$1$'],['2$1$1$14$3$2'],['1$1$']]

[['0$1$'],['2$1$1$14$'],['1$1$']] ==> [['0$1$'],['40$'],['1$1$']]

在我的代码中,我知道数组中的每个数组都是一对或多对数字,或者只是一个数字,所以这个方法适用于我。

C可以这样做,如果是,请提供一个例子。

1 个答案:

答案 0 :(得分:0)

如果您知道字符串的长度和所述字符串的数量都不会超过某个值,您可以这样做:

char Strings[NUMBER_OF_STRINGS][MAX_STRING_LENGTH + 1]; // for the null terminator

将所有这些记忆归零是一个好习惯:

for (size_t i = 0; i < NUMBER_OF_STRINGS; i++)
    memset(Strings[i], 0, MAX_STRING_LENGTH + 1);


如果要附加字符串,请使用strcat

strcat(Strings[i], SourceString);

更安全(虽然稍微更昂贵,因为你需要调用遍历整个字符串的strlen)解决方案将是:

strncat(Strings[i], SourceString, MAX_STRING_LENGTH - strlen(Strings[i]));