10.3字符串与函数

/*
要包含头文件 : #include<stdlib.h>
strlen(str),求字符串长度,不包括’\0’。
strcpy(str1,str2),str2复制到str1,str1必须发的下str2。
strcmp(str1,str2),str1大于str2,返回值大于0;str1等于str2,返回值等于0;str1小于str2,返回值小于0。

strcat(str1,str2),str2添加到str1中。str1必须有足够的大小
strncpy(str1,str2,n),str2至多前n个字符复制到str1中。
strncmp(str1,str2,n),最多比较n个字符。V
strncat(str1,str2,n),str2中至多前n个字符放到str1后面。
*/
//将字符串进行排序,利用数组进行排序,因为以行优先进行存储。

#include<stdio.h>
#include<stdlib.h>
#define MAX_LEN 10
#define N 10
void SortSting(char str[][MAX_LEN],int n)
{
    int i,j;
    char temp[MAX_LEN];
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;i<n;j++)
        {
            if(strcmp(str[i],str[j])>0)
            {
                strcpy(temp,str[i]);
                strcpy(str[i],str[j]);
                strcpy(str[j],temp);
            }
        }
    }
}
int main()
{
    int i,n;
    char str[N][MAX_LEN];
    scanf("%d",&n);
    getchar();//读走输入缓冲区里的回车符,防止gets读入了。
    for(i=0;i<n;i++)
    {
        gets(str[i]);
    }
    SortString(str,n);
    for(i=0;i<n;i++)
    {
        puts(str[i]);
    }
    return 0;
}

/*
对于单个字符进行赋值可以用赋值运算符(=),但是对于赋值运算符进行赋值,只能用strcpy();
比较字符串不能用关系运算符,而应该用strcmp()。
*/
//将一个字符串赋值到另一个字符串中。

#include<stdio.h>
#define N 80
/*
void MyStrcpy(char a[],char b[])
{
    int i;
    for(i=0;a[i]!='\0';i++)
    {
        b[i]=a[i];
    }
    b[i]='\0';
}
*/
void MyStrcpy(char *pa,char *pb)
{
   while(*pa!='\0')
   {
       *pb++=*pa++;
   }
    *pb='\0';
}
int main()
{
    char a[N],b[N];
    gets(a);
    MyStrcpy(b,a);
    puts(b);
    return 0;
}

/*
返回指针值的函数与函数指针是截然不同的:
char *f();返回字符指针的函数;
char (*f)();函数指针指向的函数,返回值是字符型。
*/
//实现字符串连接功能

#include<stdio.h>
#define N 80
char *MyStrcat(char *first,char *second)
{
    char *temp;
    temp=first;//保存第一个字符串的首地址
    while(*first!='\0')
    {
        first++;
    }
    for(;*second!='\0';second++,first++)
    {
        *first==*second;
    }
    *first='\0';
    return temp;
}
int main()
{
    char a[2*N],b[N];
    gets(a);
    gets(b);
    printf("%s\n",MyStrcat(a,b));
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值