字符串处理函数

#include<string.h>

长度 strlen(str)     string length

赋值 strcpy(str2,str1)     string copy

连接 strcat(str2,str1)     string combination

比较 strcmp(str1,str2)     string comparison → 比较ASCII码

问题:请编程实现按奥运会参赛国国名在字典中的顺序对其入场次序进行排序。假设参赛国不超过150个。

 

复制代码
 1 #include<stdio.h>
 2 #include<string.h>
 3 #define MAX_LEN 10     /*字符串最大长度*/ 
 4 #define N       150    /*字符串个数*/ 
 5 void SortString(char str[][MAX_LEN],int n);
 6 int main(void)
 7 {
 8     int i,n;
 9     char name[N]{MAX_LEN};     /*定义二维字符数组*/ 
10     printf("How many countries?");
11     scanf("%d",&n);
12     getchar();                 /*读走输入缓冲区中的回车符*/ 
13     printf("Input their names:\n");
14     for(i=0;i<n;i++)
15     {
16         gets(name[i]);         /*输入n个字符串*/
17     }
18     SortString(name,n);        /*字符串按字典顺序排序*/ 
19     printf("Sorted results:\n");
20     for(i=0;i<n;i++)
21     {
22         puts(names[i]);
23     }
24     return 0;
25 }
26 
27 void SortString(char str[][MAX_LEN],int n)
28 {
29     int i,j;
30     char temp[MAX_LEN];
31     for(i=0;i<n-1;i++)
32     {
33         for(j=i+1;j<n;j++)
34         {
35             if(strcmp(str[j],str[i])<0)
36             {
37                 strcpy(temp,str[i]);
38                 strcpy(str[i],str[j]);
39                 strcpy(str[j],temp);
40             }
41         }
42     }
43 }
复制代码
复制代码
#include<stdio.h>
#define N 80
unsigned int MyStrlen(const char *pStr);
main()
{
    char str[N];
    printf("Input a string:");
    gets(str);
    printf("The length of the string is:%u\n",MyStrlen(str));
}
unsigned int MyStrlen(const char *pStr)
{
    unsigned int len=0;
    for(;*pStr!='\0';pStr++)
    {
        len++;
    }
    return len;
}
MyStrlen(str)
复制代码
复制代码
 1 #include<stdio.h>
 2 #define N 80
 3 void  MyStrcpy(char dstStr[],char srcStr[]);
 4 main()
 5 {
 6     char str1[N],str2[N];
 7     printf("Input a string:");
 8     gets(str1);
 9     MyStrcpy(str2,str1);
10     printf("The copy is:");
11     puts(str2);
12 }
13 void  MyStrcpy(char dstStr[],char srcStr[])
14 {
15     int i=0;
16     while(srcStr[i]!='\0')
17     {
18         dstStr[i]=srcStr[i];
19         i++;
20     }
21     dstStr[i]='\0';
22 }
MyStrcpy(str2,str1)
复制代码
复制代码
 1 #include<stdio.h>
 2 #define N 80
 3 void  *MyStrcat(char *dstStr, char *srcStr);
 4 main()
 5 {
 6     char str1[2*N],str2[N];
 7     printf("Input a string:");
 8     gets(str1);
 9     printf("Input another string:");
10     gets(str2);
11     printf("Concatenate results:%s\n",MyStrcat(str1,str2));
12 }
13 void  *MyStrcat(char *dstStr, char *srcStr)
14 {
15     char *pStr=dstStr;
16     while(*dstStr!='\0')
17     {
18         *dstStr++;
19     }
20     for(;*srcStr!='\0';dstStr++,srcStr++)
21     {
22         *dstStr=*srcStr;
23     }
24     *dstStr='\0';
25     return pStr;
26 }
MyStrcat(str1,str2)
复制代码
复制代码
 1 #include <stdio.h>
 2 #define SIZE 80
 3 int MyStrcmp(char s[],char t[]);
 4 main()
 5 {                        
 6     char s[SIZE],t[SIZE],i;
 7     printf("Input s\n");
 8     gets(s);//1
 9     printf("Input t\n");
10     gets(t);//1
11     i=MyStrcmp(s,t);//2
12     if(i>0)//1
13         printf("string s>string t.\n");
14     else if(i<0)//1
15         printf("string s<string t.\n");
16     else//1
17         printf("string s=string t.\n");
18 }                        
19 int MyStrcmp(char s[], char t[])
20 {                        
21     int i;
22     for (i=0; s[i] == t[i]; i++ ) //6
23     {                        
24             if (s[i] ==  '\0' )  //2
25             return 0 ;//2
26     }
27     return (s[i]-t[i]); //2
28 }                       
MyStrcmp(str1,str2)
复制代码

 

posted @   油菜园12号  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示