开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜