我正在做一个家庭作业,重点是C类入门课程的弦乐。我在用户定义函数的if语句中使用strcmp()函数时遇到麻烦。
该分配要求我们使用用户定义的函数(我的对象为Check())来检查两个字符串是否相同(将用户输入的字符串与文件中的字符串进行比较)。出于某种原因,我的教授希望Check()如果字符串匹配则返回1,如果字符串不匹配则返回2,即使据我所知strcmp()已经在字符串匹配时返回0,如果字符串匹配则返回其他值别。
一旦我的Check()函数返回一个值(x = 1表示匹配,x = 2表示不匹配),我将在我的主函数中通过另一个if语句运行该x值,该语句应为x = 1打印“您正确”,对于x = 2,则为“您不正确”。
我遇到的问题是,无论字符串是否匹配,我在main函数中的条件总是告诉用户它们是正确的,即字符串匹配。我认为问题出在我的Check()函数和我对strcmp()的使用之内,因为我并不完全了解strcmp()的工作方式。
我已经尝试在Check()中修改我的条件,以便在if(strcmp(solution,guess)== 0)之后是else if(strcmp(solution,guess !! = 0)),但这并不能解决我的问题。
我的用户定义函数:
int Check(char solution[], char guess[])
{
if (strcmp(solution, guess) == 0)
{
int x = 1;
return x;
}
else
{
int x = 2;
return x;
}
}
这馈入我的主要职能是:
Check(solution, guess);
if (x == 1)
{
printf("Congratulations, you guessed correctly");
}
else if (x == 2)
{
printf("You guessed incorrectly");
}
当解决方案=“ FLORIDA”和猜测=“ FORLIDA”时,应打印“您猜错了”,但改为“恭喜您猜错了”。
您没有将返回值分配给任何变量。
写
x = Check(solution, guess);
在if语句之前。
if (x == 1)
{
printf("Congratulations, you guessed correctly");
}
else if (x == 2)
{
printf("You guessed incorrectly");
}
实际上,else if
您只能else
因为仅有两种可能性而写,而不必写。
因此x
,如果没有该变量,则if语句可能会像
if ( Check(solution, guess) == 1 )
{
printf("Congratulations, you guessed correctly");
}
else
{
printf("You guessed incorrectly");
}
考虑到该函数可以更简单地定义
int Check( const char solution[], const char guess[] )
{
return strcmp( solution, guess ) == 0 ? 1 : 2;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句