我对这个和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++;
}
}
}
答案 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;
}