2013-12-18 38 views
-1

我非常新的這個和C語言編程。這是我的第一年,對我來說事情不是很清楚。希望我能很快變好。如何給定的字符串比較結果

我在這裏有一個代碼,我輸入一個數字,我收到基於我有如下表結果。 我想知道:如果我有一個給定字符串(在代碼是:測試[7] =「2 B 1 C」) 如何可以比較的結果,我必須這個字符串,看看它是否是同樣的,以打印=好?

這是很難解釋,所以請讓我知道如果我不清楚我的問題。您可以測試代碼以瞭解它的工作原理。

#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 ("%d B %d C\n\n", bull, cow); 
    bull = 0; 
    cow = 0; 
    } 
} 

//------------------------------------TABLE---------------------------------// 

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++; 
     } 
    } 
} 
+0

只是要清楚用戶輸入一個號碼,根據它給表的結果。 (表給出1296個可能性) 示例: 1245 //來自用戶 1354 = 1 B 2 C //(來自表) – user3117119

+0

@userXXX您是否在尋找'strcmp()'函數? – 2013-12-18 22:50:17

+0

是的,但我想要它與我所有的結果進行比較 – user3117119

回答

1

您可以用sprintf生成結果成一個字符串,而不是打印出來的,然後使用STRCMP該字符串比較你所期望的那樣。您也可以使用printf打印您使用sprintf生成的字符串。 (當你使用sprintf時,不要包含換行符,因爲這些換行符不在你的測試字符串中;只能用printf輸出)。

有什麼理由不從你的問題不清楚,然而,就是你只有一個測試字符串,但打印1296行......如果這些線不都一樣,那麼你需要的1296個測試結果的數組或...一個更清晰的問題。

+0

謝謝你的回答。讓我嘗試並更清楚一點。 除了比較字符串,用戶輸入一個數字,從表中我得到結果。這是一個牛和牛計劃。 所以如果用戶輸入1100並且從表中獲得1010,則結果是2B2C 2公牛和2頭母牛(2個在正確位置的整數和2個不是的整數) – user3117119

0

樣品

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

int main(){ 
    char test[8]={"2 B 0 C"}; 
    char result[8]; 
    int bull = 0; 
    int cow = 0; 
    bull = 2;//set by program 
    cow = 0; 
    sprintf(result, "%d B %d C", bull, cow); 
    if(strcmp(result, test)==0){ 
     printf("match!\n"); 
    } else { 
     printf("not match!\n"); 
    } 
    return 0; 
}