C语言:用指针编写字符串左截取 右截取 中间截取函数 字符串截取 字符串比较

#include <stdio.h>
#include <string.h> 
struct data {char name[7];int age;} ab[5]={"张三",10,"李四",11,"张五",12,"李六",13,"陈七",14}; 
//编程将数组中所有姓张的年龄增加1,姓李的增加2,然后输出各个人的姓名与年龄 
//中文字符串的 截取  比较 
/*从字符串的左边截取n个字符*/
char * left(char *dst,char *src, int n)
{
    char *p = src;
    char *q = dst;
    int len = strlen(src);
    if(n>len) n = len;
    while(n--) *(q++) = *(p++);
    *(q++)='\0'; /*有必要吗?非常有必要*/
    return dst;
}

/*从字符串的中间截取n个字符*/
char * mid(char *dst,char *src, int n,int m) /*n为长度,m为位置*/
{
    char *p = src;
    char *q = dst;
    int len = strlen(src);
    if(n>len) n = len-m;    /*从第m个到最后*/
    if(m<0) m=0;    /*从第一个開始*/
    if(m>len) return NULL;
    p += m;
    while(n--) *(q++) = *(p++);
    *(q++)='\0'; /*有必要吗?非常有必要*/
    return dst;
}

/*从字符串的右边截取n个字符*/
char * right(char *dst,char *src, int n)
{
    char *p = src;
    char *q = dst;
    int len = strlen(src);
    if(n>len) n = len;
    p += (len-n);   /*从右边第n个字符開始。到0结束,非常巧啊*/
    while(*(q++) = *(p++));
    return dst;
}
main()
{
    char mb[5];
    int i;
    for(i=0;i<5;i++)
    {
        if(strcmp(left(mb,ab[i].name,2),"")==0)
        ab[i].age++;
        else if(strcmp(left(mb,ab[i].name,2),"")==0)
        ab[i].age+=2;
        printf("%s,%d\n",ab[i].name,ab[i].age);
    } 
    getchar();
 }

 

posted @ 2022-12-11 19:54  myrj  阅读(378)  评论(0编辑  收藏  举报