写一个函数,实现两个字符串的比较。即实现strcmp函数,s1=s2时返回0,s1!=s2时返回二者第一个不同字符的ASCII值。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main(){
 5     setvbuf(stdout,NULL,_IONBF,0);
 6     char s1[255],s2[255];
 7     int strcmp(char *,char *);
 8     int result;
 9 
10     printf("1st string:");
11     gets(s1);
12     printf("2nd string:");
13     gets(s2);
14     result=strcmp(s1,s2);
15     printf("The comparing result is %d.",result);
16 
17     return EXIT_SUCCESS;
18 }
19 
20 int strcmp(char *p1,char *p2){
21     int i;
22     int result;
23 
24     result=0;                        //先假设两个字符串相等,比较结果为0
25     for(i=0;*(p1+i)&&*(p2+i);i++)    //比较两个字符串中的对应字符都不为\0的情况
26     {
27         if(*(p1+i)!=*(p2+i))
28         {
29             result=*(p1+i)-*(p2+i);
30             break;
31         }
32     }
33     
34     //若两个字符串的长度不相等,但有字符的部分是完全相同的,退出上述循环后,result还是0
35     if(result==0)                    
36         result=*(p1+i)-*(p2+i);
37     return result;
38 }

下面是谭浩强的答案,比较简单。我还是不能灵活运用while语句

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main(){
 5     setvbuf(stdout,NULL,_IONBF,0);
 6     char s1[255],s2[255];
 7     int strcmp(char *,char *);
 8     int result;
 9 
10     printf("1st string:");
11     gets(s1);
12     printf("2nd string:");
13     gets(s2);
14     result=strcmp(s1,s2);
15     printf("The comparing result is %d.",result);
16 
17     return EXIT_SUCCESS;
18 }
19 
20 int strcmp(char *p1,char *p2){
21     int i=0;
22     int result;
23 
24     while(*(p1+i)==*(p2+i))
25         if(*(p1+i++)=='\0')
26             result=0;
27     result=*(p1+i)-*(p2+i);
28     
29     return result;
30 }

 

posted @ 2013-10-16 11:21  Andy Cheung  阅读(3847)  评论(0编辑  收藏  举报