strcmp_kr 関数は、K&R の文字列比較関数に基づいています。
#include<stdio.h>
#include<string.h>
int strcmp_kr (char *s, char *d) {
int i=0;
while ((s[i] == d[i])) {
printf("Entered while loop\n");
if (s[i] == '\0')
return 0;
i++;
}
return s[i] - d[i];
}
int main() {
char s1[15];
char s2[15];
printf("Enter string no. 1:");
scanf("%s", s1);
printf("Enter string no. 2:");
scanf("%s", s2);
strcmp_kr(s1, s2) == 0 ? printf("Strings equal!\n") : \
printf("Strings not equal by %d!\n", strcmp_kr(s1, s2));
}
出力:
$ ./a.out
文字列番号を入力してください。1:控えめ
文字列番号を入力してください。2:モデジー
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
whileループに入りました
文字列は -5 ではありません!
質問: while ループが 5 回ではなく 10 回入っているのはなぜですか?