我试图从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;
}
}
希望这很清楚,谢谢。
答案 0 :(得分:1)
你在代码中遗漏了很多细节,我做了很多假设。
所以,使用我所做的假设(你可以在下面的代码中看到),我相信这将做你想要完成的事情。有更简单,更简洁的方法,但我希望你能清楚地了解它如何与你的代码一起工作。
我基本上添加了一个终止空字符,这是必需的,因此strlen()
函数将正常工作并使用一个额外的变量cur_size
,它可以用作基于当前索引的偏移量{ {1}}。
i