strchr索引字符串的值

时间:2015-05-27 14:28:54

标签: c++ function

char a[20]="this is";
cout<<strchr (a,'t')-a;

这个(a,'t') - “如何显示字母t的第一个外观的索引?它是如何工作的? 有人说编译器会生成ASCII字符的总和 减去确定的角色。

3 个答案:

答案 0 :(得分:0)

纯粹是指针算术。

strchr (a,'t')返回指向字符串't'中字符a的指针。 a保存字符串的地址。

strchr (a,'t') - a返回字符串t中的a索引

示例:a有addrress 100 a中h的地址为101,

所以你将得到字符h的索引1

答案 1 :(得分:0)

x = strchr (a, 't')返回指向C字符串t中第一次出现的字符a的指针。在您的情况下,这恰好与a中第一个字符的地址相同。这也是变量a指向的内容。

通过减去x - a减去两个地址,(感谢pointer arithmetic magic)将在't'中给出a的索引。它为零,因为xa相等。与ASCII无关。

答案 2 :(得分:0)

strchr返回指向字符串中第一个找到的字符的指针。

char str[] = "Some string with spaces";
char* ptr;
ptr = strchr(str, ' ');
while(ptr != 0)
{
    printf("Space on %d. place\n", ptr - str);
    ptr = strchr(ptr + 1, ' ');
}