1

ここで非常に混乱したnoob。i @ 12 と i @ 13 が累積する理由を誰か説明できますか? 私の関数は、2 つの文字列を調べて、2 番目の文字列が最初の文字列に含まれているかどうかを確認することになっています。両方の文字列をループし、String1 と String2 の両方からそのインデックスの文字を比較することでこれを行っています。アキュムレータが短い方の文字列の長さに評価される場合、関数は 1 を返し、次のように出力します。それ以外の場合は 0 を返します。

コード:

#include <stdio.h>
#include <string.h>
int main()
{
    int accum = 0;
    char string1[21];
    char string2[9];
    strcpy(string1, "The test for the lab");
    strcpy(string2, "The test");
    int j = (strlen(string1)-1);
    for(int i = 0; i<=j; i++){
        if(string1[i] == string2[i]){
            accum += 1;
            printf("accum is %d \n",accum);         
            printf("i is %d \n",i);
            printf("string1[i] is %c \n",string1[i]);
            printf("string2[i] is %c \n",string2[i]);           
        }
    }
if (accum == strlen(string2)){
    printf("it works!");
    return 1;
}
else
    return 0;
}

端末出力:

accum is 1 
i is 0 
string1[i] is T 
string2[i] is T 
accum is 2 
i is 1 
string1[i] is h 
string2[i] is h 
accum is 3 
i is 2 
string1[i] is e 
string2[i] is e 
accum is 4 
i is 3 
string1[i] is   
string2[i] is   
accum is 5 
i is 4 
string1[i] is t 
string2[i] is t 
accum is 6 
i is 5 
string1[i] is e 
string2[i] is e 
accum is 7 
i is 6 
string1[i] is s 
string2[i] is s 
accum is 8 
i is 7 
string1[i] is t 
string2[i] is t 
accum is 9 
i is 12 
string1[i] is   
string2[i] is   
accum is 10 
i is 13 
string1[i] is t 
string2[i] is t 

助けてください!

4

0 に答える 0