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(); }