2015-11-23 43 views
0

我希望此函數比較結構中的字符串,如果沒有任何字符串,則返回indice = 0indice = -1 = matriculaInserida發現數組中的任何值是否與給定值匹配

但它不工作。

int pesquisaMatricula(char matriculaInserida[MAXMATRICULA], tVeiculo estruturaPrincipal[MAXVEICULOS], int numVeiculosRegistados){ 
int i, indice; 

    for (i = 0 ; i <= numVeiculosRegistados ; i++){ 
     if ((strcmp(estruturaPrincipal[i].matricula, matriculaInserida) != 0)){ 
      indice = -1; 
     } 
     else{ 
      indice = 0; 
     } 
    } 
    return indice; 
} 
+3

它是如何工作的?有錯誤嗎?或者輸出錯了? – BurningLights

+2

'我'應該從0到'numVeiculosRegistados - 1' – donjuedo

+1

宋遠堯是對的。現在代碼正在執行,for循環完成,並且'indice'的值只反映最後一次比較,可能隱藏了之前成功的「命中」。 – donjuedo

回答

5

你應該立即return 0一旦發現相等的字符串,然後return -1如果找不到,最後等於任何字符串。否則,比較的結果將被一次又一次地覆蓋,並且總是會返回上次比較的結果。

int pesquisaMatricula(char matriculaInserida[MAXMATRICULA], tVeiculo estruturaPrincipal[MAXVEICULOS], int numVeiculosRegistados) { 
    for (int i = 0; i <= numVeiculosRegistados; i++) { 
     if ((strcmp(estruturaPrincipal[i].matricula, matriculaInserida) == 0)) { 
      return 0; 
     } 
    } 
    return -1; 
} 
2

只要沒有找到匹配就循環,然後指示成功並打破循環。

int pesquisaMatricula(
    char matriculaInserida[MAXMATRICULA], 
    tVeiculo estruturaPrincipal[MAXVEICULOS], 
    size_t numVeiculosRegistados) 
{ 
    int result = -1; /* Be pessimistic. */ 

    for (size_t i = 0; i < numVeiculosRegistados; ++i) 
    { 
    if (0 == strcmp(estruturaPrincipal[i].matricula, matriculaInserida)) 
    { 
     result = 0; /* Indicate success ... */ 
     break; /* ... and leave. */ 
    } 
    } 

    return result; 
} 
相關問題