我有一个辅助函数来确定一个字符串是否存在于字符串数组中:
bool exists_in(char *string, char *array[], int size){
int i;
for(i = 0; i < size; ++i){
if(strcmp(string, array[i]) == 0)
printf("%s\n", array[i]);
return true;
}
return false;
}
基本上,如果数组中没有元素,我想将其放入数组中。我如何使用未初始化为其中包含值的数组来执行此操作?
char *myArray[100] // initailize array
我想在 myArray 上调用 exists_in(),但这会给我一个段错误 11,因为 myArray 中没有值。
最佳答案
如果您将数组从 0 填充到 size-1
,则使用 size
指示有效条目的数量。
如果数组不是连续填充的,或者如果您以后可能想从中删除项目,请在每个元素中使用 NULL
初始化第一个“空”数组。 (如果您稍后删除某个元素,请不要忘记将其重置为 NULL
。)
然后在 strcmp
之前的循环中添加对 NULL
的显式测试:
char *myArray[100] = { NULL }; // initialize array with NULL
// (all elements will be initialized to 0 with this construction)
...
bool exists_in(char *string, char *array[], size_t size)
{
size_t i;
for(i = 0; i < size; ++i)
{
if (array[i] && strcmp(string, array[i]) == 0)
{
printf("%s\n", array[i]);
return true;
}
}
return false;
}
关于检查字符串是否存在于未初始化的字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254750/