C语言学习笔记二(字符串)

xiaoxiao2021-03-01  8

1、 C对字符串的存储 实例:定义一个256个字符的字符串,并将字母表中的大写字母存储在前26位   char string[256];   int i;   for(i = 0; i 字符串的长度   法1:   char string[256];   int i;   gets(string);   for(i = 0; string[i] != NULL;i++)   putchar(string[i]);   printf("该字符串的长度为:%d",i);   法2:大多数C编译器提供了strlen函数,它返回串的字符数目。   char string[]="something......"   strlen(string);   为了更好地理解strlen函数如何工作,可以考虑如下方法,该方法计算字符串的长度但是不返回NULL字符。   size_t strlen(const char string)   {   int i = 0;   while(string[i])   i++;   return i;   }   3、 将一个字符串复制到另一个字符串中   #include   char *strcpy(char *destination, const char *source);   为了理解strcpy函数是如何工作的,可以思考如下的方法:   char *strcpy(char *destination, const char *source)   {   while(*destination++ = *source++)   ;   return (destination-1)   }   4、 将一个字符串追加到另一个字符串上   #include   char *strcat(char *target, const char *source)   为了更好地理解strcat函数,思考如下的方法:   char *strcat(char *target, const char *source)   {   char *original = target;   while(*target)   target++; //find the end of the string   while(*target ++ = *source++)   ;   return (original);   }   5、 给字符串追加N个字符   #include   char *strncat(char *destination, const char *source,int n)   为了更好地理解strncat函数,思考如下方法:   char *strncat(char *destination, const char *source,int n)   {   char *original = destination;   int i = 0;   while(*destination)   destination++; //find the end of the string while((i++ n) *destination = NULL; return (original); } 6、 判断两个字符串是否相同   int streql(char *string1, char *string2)   {   while((*string1 == *string2) && (*string1))   {   string1++;   string2++;   }   return ((*string1 == NULL) && (string2 == NULL));   }   7、 比较字符串时忽略大小写   #include   int strieql(char *string1, char *string2)   {   while( (toupper(*string1) == toupper(*string2)) && *string1)   {   string1++;   string2++;   }   return ( (*string1 == NULL) && (*string2 == NULL) );   }   8、 将字符串转化为大写或者小写   #include   int *strlwr(char *string)   {   char *original = string;   while(*string)   {   *string = tolower(*string);   string++;   }   return (original);   }   9、 获取字符串中第一次出现的某个字符   char *strchr(const char *string, char letter)   {   while((*string != letter) && (*string))   string++;   return (string);   }   10、返回索引到串的首次出现   int str_index(const char *string, char letter)   {   char *original = string;   while((*string != letter) && (*string))   string++;   return (string - original);   }   11、将字符串的字母反转   char *strrev(const char *string)   {   char temp;   char *original = string;   char *forward = string;   while(*string)   string++;   while(forward 字符串   int strcmp(const char *string1, const char *string2)   {   while( (*string1 == *string2) && (*string1) )   {   string1++;   string2++;   }   if((*string1 == *string2) && (!*string1))   return 0;//Same strings   else if((*string1) && (!*string2))   return (-1); //Same but string1 is longer   else if((!*string1) && (*string2))   return (1); //Same but string2 is longer   else   return ( (*string1 > *string2) ? -1: 1); //Different   }   13、比较两个字符串的前N个字符串   int strncmp(const char *string1, const char *string2, size_t n)   {   while( (*string1 == *string2) && (*string1) && i *string2) ? -1: 1); //Different   }   14、将字符串转化为数字 函数 用途 atof 将字符串转换为浮点数值 atoi 将字符串转换为整型数值 atol 将字符串转换为长整数数值 strtod 将字符串转换为双精度型数值 strtol 将字符串转换为长整型数值 15、复制字符串的内容   调用strdup函数时,函数使用malloc分配内存,然后哦将字符串单元拷贝至内存单元。但程序不再使用字符串拷贝。   #include   #include   char *strdup(constchar *string)   {   char *ptr;   if(ptr = malloc(strlen(string)+1))   strcpy(ptr,string);   returnptr;   }   16、从给定字符序列中查找字符的首次出现   在字符串string1中,函数将返回第一个不包含在string2中的字符的偏移量。   size_tstrspn(constchar *string1, constchar *string2)   {   inti, j;   for(i = 0; *string1; string1++,i++ )   {   for(j = 0; string2[j]; j++)   {   if(*string1 == string2[j])   break;   if(string2[j] == NULL)   break;   }   }   returni;   }   17、在字符串中查找子字符串   char *strstr(constchar *string1, constchar *string2)   {   inti,j,k;   for(i = 0; string1[i]; i++)   for(j = i, k=0; string1[j] == string2[k]; j++, k++)   if(!string2[k+1])   return (string1 + i);   returnNULL;   }   18、计算子字符串出现的次数   charstrstr_cnt(constchar *string, constchar *substring)   {   inti,j,k,count=0;   for(i = 0; string[i]; i++)   for(j = i, k=0; string[j] == substring[k]; j++, k++)   if(!substring[k+1])   count++;   returncount;   }   19、从字符串中删除子字符串   char *strstr_rem(char *string, char *substring)   {   inti,j,k, loc = -1;   for(i = 0; string[i] && (loc == -1); i++)   for(j = i, k = 0; string[j] == substring[k]; j++, k++)   if(! substring[k + 1])   loc = i;   if(loc != -1)   {   for(k = 0; substring[k]; k++)   ;   for(j = loc, i = loc + k; string[i]; j++, i++) string[j] = string[i]; string[i] = NULL; } return (string); } 20、用另一个子字符串代替子字符串   #include   char *strstr_rep(char *Source, char *Old, char *New)   {   char *original = Source;   chartemp[256];   intold_length = strlen(Old);   inti,j,k, location = -1;   for(i = 0; Source[i]; i++)   for(j = i, k = 0; Source[j] == Old[k]; j++,k++ )   location++;   if(location != -1)   {   for(j = 0; j 字符串是大写还是小写   if(islower(character))   if(isupper(character))   #defineislower(c) (((c) > 'a') &&((c) 'A') &&((c)   int_toupper(intcharacter);   inttoupper(intcharacter);   23、将字符转换成小写形式   #include   int_tolower(intcharacter);   inttolower(intcharacter);   24、初始化字符串   chartitle[] = "something......."   charstr[64] = "string..."
转载请注明原文地址: https://www.6miu.com/read-4149963.html

最新回复(0)