Help with Strings in C
Given the char * variables name1 , name2 , and name3 , write a fragment of code that assigns the largest value to the variable max (assume all three have already been declared and have been assigned values).
I've tried and came up with this:
if ((strcmp(name1,name2)>0)&&(strcmp(name1,name3)>0)){
max=name1;
}
else if ((strcmp(name2,name1)>0)&&(strcmp(name2,name3)>0)){
max=name2;
}
else if((strcmp(name3,name1)>0)&&(strcmp(name3,name2)>0)){
max=name3;
}
else if(strcmp(name3,name1)==0){
max=name1,name3;
}
else if (strcmp(name2,name1)==0){
max=name2,name1;
}
else if (strcmp(name2,name3)==0){
max=name2,name3;
}
else{
max=name1,name2,name3;
}
However, 开发者_高级运维I get this error Your code is incorrect. You are not handling the situation where two or more strings are equal.
Solved...
strcmp
returns 0 when your strings are equal
I'll leave it for you to figure out why you aren't handling it.
Edit:
Bob and Alice are 10 years old.
What is the max age?
Hint: it's not undefined.... it's 10.
Watch out: strcmp
does not do numeric comparison!
That is
strcmp("10","2")
returns a negative value, indicating that "2"
is bigger than "10"
which is almost certainly not what you want.
You probably want to convert the strings to numbers of some kind before comparing. Consider using sprintf
or atoi
or atof
or strtod
.
精彩评论