2016-01-21 41 views
-1

我正在爲Arduino編寫一些代碼,我不確定是否正確檢查了這個字符變量的值。你能告訴我,如果這是正確的:檢查字符變量的值

const char* front = "front"; 
const char* back = "back"; 

eyeballs(front); 
eyeballs(back); 

void eyeballs(const char* frontOrBack){ 

if (frontOrBack == "front") { 
    digitalWrite(frontEyes, LOW);}//end if 
    else if (frontOrBack == "back") { 
    digitalWrite(backEyes, LOW);}//end else*/ 
} 
+2

將'X == Y'更改爲'!strcmp(X,Y)'。您的代碼會比較兩個字符串是否共享相同的內存位置 –

回答

5

您需要使用strcmp()比較C字符串。你所做的是指針比較。

if (strcmp(frontOrBack, "front") == 0) { 
    digitalWrite(frontEyes, LOW);}//end if 
    else if (strcmp(frontOrBack, "back") == 0) { 
    digitalWrite(backEyes, LOW);}//end else*/ 
} 

在該比較中,

if (frontOrBack == "front") { 

指針值frontOrBack與字面"front"(在表達式中,一個字符串文字被轉換到一個指針到它的第一個元素)字符串的地址進行比較。