使用strcmp扫描阵列

使用strcmp扫描阵列,c,cstring,strcmp,C,Cstring,Strcmp,我想知道是否有一种方法可以使用strcmp扫描数组以查找匹配项。我知道传递给strcmp的参数是C字符串。这样的事情是行不通的: strcmp(arrayofstrings[x], c-string) 只要参数可以简化为constchar*类型,它就可以工作 char *a[] = { "Hello", "Hello" }; // Array of pointers to c strings if ( !strcmp(a[0],a[1]) ){ // true in this cas

我想知道是否有一种方法可以使用
strcmp
扫描数组以查找匹配项。我知道传递给strcmp的参数是C字符串。这样的事情是行不通的:

strcmp(arrayofstrings[x], c-string)

只要参数可以简化为
constchar*
类型,它就可以工作

char *a[] = { "Hello", "Hello" };  // Array of pointers to c strings
if ( !strcmp(a[0],a[1]) ){
    // true in this case
}

如果要搜索整个数组,而不是仅仅比较两个元素,则需要一个循环

const int N = 10;
const char * desired = "desiredString";
char * arrayOfStrings[N];

// You should initialize the elements
// in arrayOfStrings[] before searching

// Searching an unsorted array is O(N)
for(i = 0; i < N; i++)
{
    if(strcmp(arrayOfStrings[i], desired) == 0)
    {
        printf("Found %s.", desired);
        break;
    }
}
const int N=10;
const char*desired=“desiredString”;
char*arrayOfStrings[N];
//您应该初始化元素
//搜索前在ArrayOfString[]中
//搜索未排序的数组是O(N)
对于(i=0;i
那么什么是
string
string2
?arrayofstrings是cstrings的数组如果uni是一个包含100个元素的字符,而string1是16个元素,我该怎么做呢?如果(!strcmp(uni[i],string1)
uni[i]
的类型是char,而不是char*。它们无法进行比较。这样做会很笨拙。而且我想不出任何其他方法。顺便问一下,为什么您希望以任何方式将字符串与char进行比较。正在比较的两个字符串都必须以null结尾。我不确定在这种情况下char如何以null结尾。如果string1不是常量,它经常被新的数据字符串覆盖。我只是误解了你写的代码。我现在明白了。谢谢