2013-12-16 121 views
0

我目前正在編程一個公牛和奶牛程序,我試圖弄清楚如何將給定的字符串與我的結果進行比較。 我在這裏粘貼我的代碼,以便您更好地理解。 關於代碼:我有一個字符測試是給定的字符串,我有幾個結果。大約有1296個結果。我想要它做的是將結果與char測試進行比較,並告訴我它是否相同。(等於或不是)。我希望我不會錯過任何其他信息。如果我這樣做,請讓我知道。謝謝:)將給定的字符串與結果進行比較

#include <stdio.h> 
#include <string.h> 

void initialize(int poss[1296][4]); 

int main() 
{ 
    int table[1296][4]; 
    char str[5]; 
    char tmp[5]; 

    int i, j, k; 
    int bull = 0; 
    int cow = 0; 
    char test[7]={"2 B 0 C"}; 

    initialize(table); 
    printf("Enter 4 digits: "); 

    scanf("%s", str); 

    for (i=0; i<1296; i++) // building this table 
    { 
     strcpy(tmp, str); // copying string 

     for (j=0; j<4; j++) 
     { 
      for (k=0; k<4; k++) 
      { 
       if (table[i][j]==tmp[k]-'0' && j==k) // gets the string as an integer 
       { 
        tmp[k] = -1; 
        bull++; 
        break; 
       } 
       else if (table[i][j]==tmp[k]-'0' && j!=k) 
       { 
        tmp[k] = -1; 
        cow++; 
        break; 
       } 
      } 
     } 

     //printf ("Number: %d%d%d%d, Input: %s\n",table[i][0], table[i][1], table[i][2],  table[i][3], str); 
     printf ("%d B %d C\n\n", bull, cow); 
     bull = 0; 
     cow = 0; 
    } 
} 

void initialize(int poss[1296][4]) 
{ 
    int i=0; 
    int j, k=0; 
    int m; 

    while (i<=5) 
    { 
     for (j=0; j<216 ; j++) 
     { 
      poss[k][0]=i; 
      k++; 
     } 
     i++; 
    } 

    k=0; 
    i=0; 
    j=0; 

    while (k<1296) 
    { 
     for (m=0; m<6; m++) 
     { 
      for (j=0; j<6; j++) 
      { 
       for (i=0; i<36 ; i++) 
       { 
        poss[k][1]=j; 
        k++; 
       } 
      } 
     } 
    } 

    k=0; 
    i=0; 
    j=0; 
    m=0; 

    while (k<1296) 
    { 
     for (j=0; j<6; j++) 
     { 
      for (i=0; i<6; i++) 
      { 
       poss[k][2]=j; 
       k++; 
      } 
     } 

    } 

    k=0; 
    i=0; 
    j=0; 
    m=0; 

    while (k<1296) 
    { 
     for (i=0; i<6; i++) 
     { 
      poss[k][3]=i; 
      k++; 
     } 
    } 
} 
+1

有一個函數'strcmp'來比較字符串。你也可以手動執行。 – Dipto

+1

有一個函數** strcmp **用於比較2個字符串區分大小寫和** stricmp **,用於比較2個字符串不區分大小寫。你可以修改你的代碼來使用這兩個函數。 – David

+0

好的是的,但我怎麼能比較我的字符串與printf的結果? –

回答

1

如果我理解正確的,我覺得有兩個簡單的方法來測試:

1.

if ((bull == test[0] - '0') && (cow == test[4] - '0')) 
    // strings are equal 

2.

char buffer[8]; 
sprintf(tempString, "%d B %d C", bull, cow); 
if (strcmp(tempString, test) == 0) 
    // strings are equal 
printf("%s\n\n", buffer); 

我會建議第一種方法,但是,甚至更好,添加這些:

int testBull = test[0] - '0'; 
int testCow = test[4] - '0'; 

並測試它們而不是在每一步計算它們。

相關問題