2

文字列を解析し、文字列の最後の文字をチェックしたいと考えています。例えば:

char *name = "angela";

int i;
for(i = 0; i <= strlen(name); i++) {
    if(name[i] == 'a' && i == strlen(name)) {
        *do something here*;
     }
}

これを試しましたが、何も起こりません。なぜこれがうまくいかないのですか?

4

3 に答える 3

10

変化する:

for(i = 0; i <= strlen(name); i++) {
    if(name[i] == 'a' && i == strlen(name)) {

に:

for(i = 0; i < strlen(name); i++) {
    if(name[i] == 'a' && i == strlen(name) - 1) {

理由: C 文字列の最初の文字 のsインデックスは 0 で、最後の文字のインデックスstrlen(s) - 1は合計strlen(s)文字数です。

于 2013-04-23T20:05:01.830 に答える
3

関数 strlen は、最後のインデックスではなく、文字列の実際の長さを返します。あなたの例「アンジェラ」では、strlen は 6 を返しますが、この文字配列の最後のインデックスは 5 です。したがって、次を使用する必要があります。

if(name[i] == 'a' && i == strlen(name) -1)
于 2013-04-23T20:08:58.673 に答える
3

次のように文字列の最後の文字を確認するだけです (ループを使用する必要はありません)。

char *name = "angela";
if(strlen(name)>0)//do the check below only if the string is not empty
if(name[strlen(name)-1]=='a')
{
    //do something here
}
于 2013-04-23T20:22:10.127 に答える