當我運行我爲'strlen'編寫的程序時,我不斷收到錯誤。 (當一個字符串出現在另一個字符串的末尾時,strlen返回1)。我想這是第一次給出錯誤的while循環,因爲當我把printf("%c\n", *s);
而不是空的;
,它只是正常工作。語法有什麼問題?雖然執行'strend'時出現循環錯誤
#include <stdio.h>
int strend(char *s, char *t)
{
int len;
int dummy;
while (*s++)
; // why error???
while (*t++)
len++;
for (; len>0 ; len--)
{
if (*(s-len) != *(t-len))
return 0;
}
return 1;
}
int main() {
char one[] = "I 0dont like youa";
char two[] = "ke youa";
printf("%d\n", strend(one, two));
}
初始化'和'0' len'。 –
改爲'while(* s)++ s;對於(len = 0; * t; ++ t)++ len;' – BLUEPIXY
對於64位很長的字符串,代碼將會失敗。更好地使用'size_t'而不是'int'。 – alk