我想使用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索引。你能告诉我应该如何使用这个功能吗?
答案 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
或只是将字符与'=='运算符进行比较,如果您愿意使用自己的循环。