1

我有一个填充“char array_of_strings[100][100];”的循环 在某些时候,我希望能够从到目前为止添加的所有字符串中清除它并从位置 0 开始添加。如何在 C 中清除/休息它?

谢谢

4

4 回答 4

7

您可以使用memset 函数将所有字符设置回零。

PS 使用二维数组来处理字符串是相当不合常规的。尝试动态分配单个字符串。

于 2009-10-03T19:21:30.120 回答
3

该数据结构确实没有固有结构。你基本上通过假装里面什么都没有来重置它。

您有一些计数器可以告诉您填充了哪些字符串,对吗?将其设置为零。完毕。

于 2009-10-03T19:20:06.113 回答
2

假设您实际上将数组用作字符串,那么这样的事情应该可以工作:

int i;
for (i=0; i<100; i++)
   array_of_strings[i][0] = 0;

当然,如果您没有将数据视为字符串,那么您可能需要查看 memset 之类的东西。

于 2009-10-03T19:23:48.117 回答
2
memset(array_of_strings, 0, sizeof(array_of_strings));

这比在其中放置一个大小的幻数更干净,并且当有人更改您的字符串数组的大小时不太可能打破道路。由于您在编译时知道数组的大小,因此使用 sizeof 将起作用。

您也可以使用 bzero,它很像 memset,但仅用于归零。在某些平台上,bzero 可能比 memset 更快,但老实说,这两个函数都非常快,在这里分裂头发是愚蠢的。

bzero(array_of_strings, sizeof(array_of_strings));

bzero 要求你 #include memset 需要 #include

memset 手册页在这里

bzero 手册页在这里

于 2009-10-03T19:38:38.170 回答