出处:数据结构的作业题目。
设串采用定长的顺序存储结构,编写函数StrCompare(S,T)实现两个串的比较。要求比较结果有大于、等于和小于三种情况。
以自定义函数形式写出,直接上代码吧
int StrCompare(String *S, String *T) { int i=1; if(S->ch[0]==T->ch[0]) { while(i<=S->len) { if(S->ch[i]!=T->ch[i]) return S->ch[i]-T->ch[i]; i++; } if(i>S->len) return 0; } return S->ch[0]-T->ch[0]; }
既然能po在学习日记上肯定是有意义的。因为此前我虽然用过这个函数(只有在考试或者写作业的时候),但是总是没搞清楚compare的意思。
我以为是整个串的ASCii码数值加起来去compare大小,我错了。
字符串比较的规则是:从两个字符串的首字符开始,一次比较相对应的字符(比较字符的ASCII码),知道出现不同的字符或遇‘\0’为止。如果所有的字符都相同,返回0;否则,以第一个不相同字符的比较结果为准,返回这两个字符的差,即第一个字符串中的字符减去第二个字符串中的字符得到的差。
可能这是很多人不以为意的一个point,我一开始也这么觉得,其实人人都是这样的啦,反正我以后不会再在这里倒下了。
学习就是一个扫雷的过程,我相信如果不去处理它我以后可能就会为这个小细节付出代价,加油吧 :)