字符串

字符串:C/C++中没有专门处理字符串的变量,一般都用数组存放。字符串以 ’\0’ 作为结束符。

1.其他类型转字符串:C语言提供了几个标准库函数,可以将任意类型,如下所示:

  itoa():将整形转换为字符串

  ltoa():将长整型转换为字符串

  ultoa():将无符号长整型转换为字符串

  也可以用sprintf将数字转换为字符串,其比上面库函数转换效率低

2.字符串转为其他类型:

  atoi():将字符串转换为整型值

  atol():将字符串转换为长整型值

  strtoul():将字符串转换为无符号长整型值

3.常用的字符串处理函数:

  字符串输出函数  puts()      字符串输出函数  gets()

  字符串连接函数  strcat()    字符串复制函数  strcpy()

  字符串比较函数  strcmp()     测字符串长度函数 strlen()

  字符串子串比较函数 strstr()  

4. strcpy与memcpy的区别(可分3类):

  1》复制的内容不同;strcpy只能复制字符串,而memcpy可以是任意的内容(数组,结构体、类等)

  2》复制的方法不同;strcpy不指定长度,遇到字符串结束符 '\0' 就结束,但memcpy由第三个参数决定

  3》用途不同;复制字符串一般用strcpy,其他数据类型时,一般用memcpy

5.编写函数实现字符串库函数功能

  1.编写实现 strcpy 函数功能 

1 char *strcpy(char *dest, const char *src)
2 {
3     char *tmp = dest;
4 
5     while ((*dest++ = *src++) != '\0')
6     {}
7     return tmp;
8 }
View Code

  2.编写实现 memcpy 函数功能

 1 void *memcpy(void *dest, const void *src, size_t num)
 2 {
 3     int i;
 4     char *d = (char *)dest, *s = (char *)src;
 5 
 6     for (i = 0; i < num; i++)
 7         {
 8             d[i] = s[i];
 9         }        
10     return  dest;
11 }                    
View Code

  3.编写实现 strlen 函数功能

1 size_t strlen(const char *str)
2 {
3     const char *tempstr= str;
4 
5     while (*tempstr!= '\0')
6         tempstr++;
7     return tempstr- str;
8 }
View Code

  4.编写实现 strcmp 函数功能

 1 int strcmp(const char *cs, const char *ct)
 2 {
 3     unsigned char c1, c2;
 4     while (1) 
 5         {
 6         c1 = *cs++;
 7         c2 = *ct++;
 8         if (c1 != c2)
 9             return c1 < c2 ? -1 : 1;
10         if (!c1)
11             break;
12     }
13     return 0;
14 }    
View Code

  5.字符串反转函数

 1 char* strrev1(const char *str)
 2 {
 3     int len = strlen(str);
 4     char *tmp = new char[len + 1];
 5     
 6     strcpy(tmp, str);
 7     for(int i = 0; i < len / 2; ++i)
 8     {
 9         char c = tmp[i];
10         tmp[i] = tmp[len - i - 1];
11         tmp[len - i - 1] = c;
12     }
13     return tmp;
14 }
View Code

  6.字符串删除函数

 1 char* deleteChar(char *str, char c)
 2 {
 3     char *head = NULL;
 4     char *p = NULL;
 5     
 6     if(str = NULL)
 7     {
 8         return NULL;
 9     }
10     head = p = str;
11     while(*p++)
12     {
13         if(*p != c)
14         {
15             *str++ = *p;
16         }
17     }
18     *str = '\0';
19     return head;
20 }
View Code

  7.编程实现 strcat 函数功能

1 char *strcat(char *dest, const char *src)
2 {
3     char *tmp = dest;
4 
5     while (*dest)
6         dest++;
7     while ((*dest++ = *src++) != '\0');
8     return tmp;
9 }
View Code
posted @ 2018-10-04 17:38  louis-gx  阅读(138)  评论(0编辑  收藏  举报