如何将给定字符串与结果进行比较

时间:2013-12-18 22:48:42

标签: c

我对这个和C编程都很陌生。这是我的第一年,对我来说事情并不是很清楚。希望我能很快好起来。

我这里有一个代码,我输入一个数字,然后根据下面的表格得到结果。 我想知道:如果我有一个给定的字符串(在代码中它是:test [7] =“2 B 1 C”) 如何比较我对此字符串的结果,看看print = good是否相同?

这很难解释所以如果我不清楚我的问题,请告诉我。您可以测试代码以查看其工作原理。

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

2 个答案:

答案 0 :(得分:1)

您可以使用sprintf将结果生成为字符串而不是打印它,然后使用strcmp将该字符串与您期望的字符串进行比较。然后,您还可以使用printf打印使用sprintf生成的字符串。 (当您使用sprintf时,请不要包含换行符,因为换行符不在您的测试字符串中;只输出带有printf的换行符。)

然而,从你的问题中不清楚的是,你只有一个测试字符串,但打印1296行...如果这些行不完全相同,那么你需要一个1296个测试结果的数组......或者更明确的问题。

答案 1 :(得分: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;
}