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

我想使用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索引。 你能告诉我应该如何使用这个function吗?

这一行:

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

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

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

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

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

 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)次)