如何获取字符串的第n个字符?

Asp*_*pyn 14 c memory string char

我有一个字符串,

char* str = "HELLO"
Run Code Online (Sandbox Code Playgroud)

如果我想从中得到E那我该怎么做?

Rei*_*aka 23

char* str = "HELLO";
char c = str[1];
Run Code Online (Sandbox Code Playgroud)

请记住,C中的数组和字符串开始索引为0而不是1,所以"H"是str[0],"E"是str[1],第一个"L"是str[2],依此类推.


Gra*_*rks 13

你会这样做:

char c = str[1];
Run Code Online (Sandbox Code Playgroud)

甚至:

char c = "Hello"[1];
Run Code Online (Sandbox Code Playgroud)

编辑:更新以找到"E".

  • 得到"E"? (2认同)
  • @Aspyn 仅供参考,访问这样的字符串是可以的,但是在 `C` 中尝试修改它是非法的(你不能做 `str[0] = "J"`,其中 `str` 指向一个字符串字面量)。 (2认同)

mta*_*med 5

数组表示法和指针算术在 C/C++ 中可以互换使用(并非所有情况都如此,但当您到达那里时,您会自己找到这些情况)。因此,虽然str是一个指针,但您可以像使用数组一样使用它:

char char_E = str[1];
char char_L1 = str[2];
char char_O = str[4];
Run Code Online (Sandbox Code Playgroud)

...等等。您还可以做的是将指向字符的指针的值“加”1,str然后该字符将指向字符串中的第二个字符。然后你可以简单地做:

str = str + 1; // makes it point to 'E' now
char myChar =  *str;
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。