文字列を解析し、文字列の最後の文字をチェックしたいと考えています。例えば:
char *name = "angela";
int i;
for(i = 0; i <= strlen(name); i++) {
if(name[i] == 'a' && i == strlen(name)) {
*do something here*;
}
}
これを試しましたが、何も起こりません。なぜこれがうまくいかないのですか?
変化する:
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)
文字数です。
関数 strlen は、最後のインデックスではなく、文字列の実際の長さを返します。あなたの例「アンジェラ」では、strlen は 6 を返しますが、この文字配列の最後のインデックスは 5 です。したがって、次を使用する必要があります。
if(name[i] == 'a' && i == strlen(name) -1)
次のように文字列の最後の文字を確認するだけです (ループを使用する必要はありません)。
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
}