2013-12-16 85 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'; 

并测试它们而不是在每一步计算它们。

相关问题