我期待「匹配!」當n2
的尾部與n1
尾部相同時,否則「不匹配!」。 「匹配!」的示例:n1 = 123456
和n2 = 3456
。奇怪的結果與C字符串
問題出在我輸入時,例如n1 = "45"
和n2 = "645"
。它不應該匹配,但輸出是「匹配!」。
bool different_tail = false;
char n1[11], n2[11];
cin >> n1 >> n2;
for(int i = strlen(n1)-strlen(n2); i < strlen(n1); i++){
if(i < 0 || n1[i] != n2[i-(strlen(n1)-strlen(n2))]){
different_tail = true;
break;
}
}
if(different_tail)
cout << "does not match!" << endl;
else
cout << "match!" << endl;
我不想用其他方法來解決問題(比如strcmp等),我想了解發生了什麼。
這聽起來像你可能需要學習如何使用調試器來逐步執行代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
Nathan,strlen(n1)-strlen( n2)是-1,'for'沒有執行......我不知道爲什麼。而且我無法調試其他任何東西來了解這一點。 – WithoutNameZin