سؤال

I have a program in which I have an array of 10 struct variables called students. Within students I have a char array variable called testAnswers with 20 elements. What I am trying to do is to compare these ten students' testAnswers with a char array variable called answers with 20 elements. Basically, variable answers is the answer sheet for the students' testAnswers. The answers are all true/false. This is what I have so far:

Note: numStu is 10 and numAns is 20.

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

The errors I continue to receive:

invalid conversion from char to const char
initializing argument 1 of `int strcmp(const char*, const char*)' 

For both instances where I used strcmp. I am wondering if there is anyway to correct this error or any better way to compare these two chars and score the test.

هل كانت مفيدة؟

المحلول

strcmp is to compare to strings (sequences of characters), not single characters.

You can just use an equality check for single characters:

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

Note that if we're talking about boolean values, using an explicit boolean type is probably better than char.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top