使用strcmp比较char数组中的字符

时间:2013-07-14 12:56:21

标签: c char strcmp

我想使用strcmp在char数组中查找特定字符。例如,我想检测文本中.所在的索引号。

char host[100] = "hello.world";
size_t i=0;
for(i=0;i<strlen(host);i++){
   if(strcmp(host[strlen(host)-i], ".")){
        printf("%d\n",i);
   }
}
然而,

输出"passing argument 1 of 'strcmp' makes pointer from integer without a cast "。我注意到char数组是一个int,但我无法弄清楚我应该如何传递char索引。你能告诉我应该如何使用这个功能吗?

2 个答案:

答案 0 :(得分:2)

由于看起来你想要向后扫描字符串,你可以这样做:

char host[100] = "hello.world";
size_t ii=0;

for(ii=strlen(host); ii--;){
   if(host[ii] ==  '.') { // compare characters, not strings
        printf("%zu\n", ii);
   }
}

这样做的另一个好处是只调用strlen()一次(原始代码称为N*(N-1)次)

答案 1 :(得分:1)

这一行:

if(strcmp(host[strlen(host)-i], ".")){

应该看起来像这样(添加了&符号,将指针传递给char数组的元素):

if(strcmp(&host[strlen(host)-i], ".")){

但正如其他人已经指出的那样,strcmp并不是完成任务的最佳工具。您可以使用strchr或只是将字符与'=='运算符进行比较,如果您愿意使用自己的循环。