0

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

4

2 回答 2

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

于 2013-07-14T13:59:14.143 回答
1

这一行:

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

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

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

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

于 2013-07-14T13:01:46.587 回答