使用带有char和struct数组的strcmp时出错

时间:2013-09-24 22:26:46

标签: c strcmp

我有一个程序,其中有一个名为struct的10 students个变量数组。在students内,我有一个名为char的{​​{1}}数组变量,包含20个元素。我要做的是将这十个学生的testAnswers与名为testAnswers的{​​{1}}数组变量与20个元素进行比较。基本上,变量char是学生answers的答题纸。答案都是真/假。这就是我到目前为止所做的:

注意:answers为10,testAnswers为20。

numStu

我继续收到的错误:

numAns

对于我使用void checkAnswers(char answers[], student students[]){ for (int i = 0 ; i < numStu ; i++){ for (int d = 0 ; d < numAns ; d++){ if (students[i].testAnswers[d] == ' '){ students[i].score += 1 ; //if the student did not answer the question add 1 which will be substracted once if loop sees it is not correct resulting in the student losing 0 points. } if (strcmp(answers[d],students[i].testAnswers[d]) == 0){ students[i].score +=2 ;//if the student answer is correct add 2 points to score } if (strcmp(answers[d],students[i].testAnswers[d]) != 0){ students[i].score -= 1 ; //if the student answer is incorrect substrct 1 point } }//end inner for }//end for outer }//end checkAnswers 的两个实例。我想知道是否有任何方法可以纠正这个错误,或者更好的方法来比较这两个字符并对测试进行评分。

1 个答案:

答案 0 :(得分:3)

strcmp字符串(字符序列)进行比较,而不是单字符

您可以对单个字符使用等式检查:

if (answers[d] == students[i].testAnswers[d])

请注意,如果我们讨论布尔值,使用an explicit boolean type可能比char更好。