节字符数组和字符串类型.ppt
- 格式:ppt
- 大小:291.50 KB
- 文档页数:100
字符串和字符数组的区别字符串和字符数组的区别和联系:c语⾔的字符串由C的字符数组变形⽽成,末尾加上'\0'字符串⽐字符数组多⼀个'\0'#include<iostream>using namespace std;int main(){//没有存储结束符的话就不是字符串,就是⼀个字符数组(单纯的字符数组)//字符数组char a[3]={'1','2','3'} ;//字符串char a[3]={'1','2','\0'} ;return 0;}联系:都是⼀数组形式存储数据,字符之间地址连续,可以⽤下标来访问,同样的数据如果以字符数组和字符串存储⼤⼩有区别,字符串⽐字符数组⼤⼀个'\0',字符串常⽤的操作函数:strlen/strcpy/strcmp/sprintf/ strcat/strstr/strdup以及strncpy/strncmp/snprintf/strncat这些带n的函数strlen :字符串长度strcmp :字符串⽐较strcpy :字符串拷贝strcat :字符串拼接#include<iostream>#include<stdlib.h>#include<string>#include <assert.h>using namespace std;//连接字符串被copy的要⽤constchar *my_strcat(char *d, const char *t){char *address = d;while (*d != '\0') //将原字符串指针移到最后⼀个字符d++;while ((*d++ = *t++) != '\0') //开始复制NULL;return address; //返回指针}//字符串的复制同样被复制的为了安全要⽤constchar *my_strcpy(char *d,const char *t){char *str = d;while (*t != '\0'){*d = *t;d++,t++;}//复制到结束为 \0return str;}//从第n个字符开始复制char *my_strncpy(char *dest, char *t, int n){char *str = dest; //⽤指针str来操作while (n&&*t != '\0') {*dest = *t;++*dest, ++*t;n--;}return str;}//⼩写转⼤写char *my_strup(char *dest){char *str = dest;while (*dest != '\0'){ //判断是否输的确实是⼩写if (*dest >= 'a' && *dest <= 'z')*dest -= 32;dest++;}return str;}//⼤写转⼩写char *my_strlwr(char *dest){char *str = dest;while (*dest != '\0'){ //判断是否输的为⼤写if (*dest >= 'A' && *dest <= 'Z')*dest += 32;dest++;}return str;}//⽐较字符⽐较⼤⼩被⽐较的字符串都要⽤使⽤constint my_strcmp(const char *s1, const char * s2){while (*s1&&*s2&&*s1 == *s2){s1++;s2++;}return (*s1 - *s2);//如果相等返回0 ⼤于返回正⼩于返回负}int main(){char a[100],b[100];cin >>a>> b;char *p1 = a, *p2 = b;//连接字符串//cin >> a >> b;//my_strcat(p1, p2);//把b复制到a//my_strcpy(p1, p2);//从第n开始复制//my_strncpy(p1, p2, 2);//cin >> b;//cout << my_strcmp(p1, p2);//⼩写转⼤写⼤写转⼩写//cin >> a;//my_strup(p1);//cout << a<<endl;//my_strlwr(p1);//cout << a << endl;cout<<my_strcmp(a, b)<<endl;system("pause");return 0;}strdup与strcpy函数和功能描述:①extern char *strdup(char *s);头⽂件:string.h功能: 将串拷贝到新建的位置处说明:strdup不是标准的c函数。