我正在努力寻找如何在char [20]中打印角色的位置。任何人都可以帮助我吗?
int emfanisi(char a[])
{
int i, mikos;
char b;
printf("Dose xaraktira\n");
scanf("%s", b);
mikos = strlen(a);
for(i=0; i<mikos; i++)
{
if(a[i] == b)
return i;
break;
}
}
答案 0 :(得分:3)
问题是如果char在第一次迭代中不匹配,则循环将中断。更改如下。
在旁注中,已经有一个函数可以在字符串中找到一个字符:strchr(str,char)
。
代码:
int emfanisi(char a[])
{
int i, mikos;
char b;
printf("Dose xaraktira\n");
scanf("%c", &b);
mikos = strlen(a);
for(i=0; i<mikos; i++)
{
if(a[i] == b)
return i;
}
return -1; //Indicate doesn't found.
}
答案 1 :(得分:1)
你可以使用strchr函数来做你想做的事。
strchr()函数应该找到第一次出现的c (转换为char)在s指向的字符串中。终止 null byte被认为是字符串的一部分。
http://pubs.opengroup.org/onlinepubs/009695399/functions/strchr.html
如果返回值不为null(即找到字符),则可以使用以下命令获取索引:
const char* res = strchr(cstr,'A');
int index = cstr-res; //< NOTE: you should check that res != 0
答案 2 :(得分:1)
您正在尝试搜索字符串中的字符,并返回数组中的位置(如果它存在于数组中)。
您应该扫描character
而不是string
更改您的scanf(),以便您的条件检查if(a[i] == b)
正常工作
scanf("%c", &b);
在字符串中找不到字符时包含错误条件。 在for循环之后,for循环中不会发生返回。
return -1;
答案 3 :(得分:0)
那应该做你想做的事:
const char * pos = strchr(your_string, character_you_search_for);
if(!pos)
printf("not found\n");
else
printf("position is : %d\n", pos - your_string);
strchr返回指向第一个出现的字符的指针,因此通过从中减去your_string,你得到它的偏移量。