将char数组中的字符推送到索引0

时间:2013-12-09 20:31:29

标签: c arrays structure

我试图从f构建一个字符串,在空白处拆分并将其读入结构中。 f是我迭代的char数组。

然后我将内容从tmp复制到ra1.callsign中,基本上清空了tmp char数组。

我想要做的是让tmp变量再次从索引0开始构建,这样当我第二次尝试strcpy时,tmp中的所有字符都从索引0开始。 我现在拥有它的方式,当它尝试行时:strcpy(ra1.location,tmp)它不会复制任何东西,我认为这是因为在那时tmp中的第一个字符不会出现,直到一段时间下来阵列。

char c;
char tmp[1000];

for (i = 0; i < len; ++i) {
    c = f[i];

    if (c != ' ') {
        tmp[i] = c; //build string to be added
    }

    //add string to data structure
    if (c == ' ') {
        if (addTo == CALLSIGN) {
            strncpy(ra1.callsign, tmp, strlen(tmp));
            memset(tmp, '\0', strlen(tmp));
        }

        if (addTo == LOCATION) {
            strcpy(ra1.location, tmp);
        }

        ++addTo;
    }
}

希望这很清楚,谢谢。

1 个答案:

答案 0 :(得分:1)

你在代码中遗漏了很多细节,我做了很多假设。

所以,使用我所做的假设(你可以在下面的代码中看到),我相信这将做你想要完成的事情。有更简单,更简洁的方法,但我希望你能清楚地了解它如何与你的代码一起工作。

我基本上添加了一个终止空字符,这是必需的,因此strlen()函数将正常工作并使用一个额外的变量cur_size,它可以用作基于当前索引的偏移量{ {1}}。

i