字符串数组的问题!

测试一个程序,将多个字符串数组依次遍历,找出待查找的字符串位于那个数组。

定义字符串数组的时候如下定义:

char *str1[]={"hello","world","china","Ich","Liebe"};
char *str2[]={"hehe","haha"}
这里在遍历查找字符串的时候,陷入了一个思维误区。认为每个字符串数组的终止值为NULL。然后利用下面的结构进行测试:

int find_str(char **strings,char str[])
{
char **temp;
int i;
for(i=0,temp=strings;*temp!=NULL;i++,temp++)
          if(!strcmp(*temp,str))
                      return 0;
return -1
}
这里出现的问题是,程序无法终止下来。查阅资料得知,以上面的形式定义字符串数组,其实并未以NULL结束。这里判断查找结束的条件要以字符串数组的长度为判定。故而对代码进行如下的修改:

#define WORD   sizeof(str1)/sizeof(str1[0])
int find_str(char **strings,char str[])
{
char **temp;
int i,size;
size=WORD;
for(i=0,temp=strings;temp<strings+size;i++,temp++)
          if(!strcmp(*temp,str))
                      return 0;
return -1
}
如果不想使用字符串数组的长度来判定。要保持第一种方案,需要对字符串数组进行修改:

char *str1[]={"hello","world","china","Ich","Liebe",NULL};
char *str2[]={"hehe","haha",NULL}
在每个字符串数组后面添加NULL终止条件,然后就可以满足第一种方案。






你可能感兴趣的:(字符串数组的问题!)