C 字符串函数

2018-05-19 16:21 更新

学习C - C字符串函数

检查字符串数据长度

您可以使用string.h头中的strlen()函数来获取字符串数据的长度。


  #include <stdio.h> 
  #include <string.h> 

  void string_length(); 

  int main(int argc, const char* argv[]) { 

      string_length(); 

      return 0; 
  } 

  void string_length(){ 
      char str[20] = "Hello world"; 

      printf("str: %s\n",str); 
      printf("length: %d\n",(int)strlen(str)); 

  } 

上面的代码生成以下结果。


索引字符

你可以通过位置索引得到一个字符。string_var [index]语法提供了这个功能。

注意0是第一个索引。


  #include <stdio.h> 
  #include <string.h> 

  void string_explore(); 

  int main(int argc, const char* argv[]) { 

      string_explore(); 

      return 0; 
  } 

  void string_explore(){ 
      char str[15] = "Hello world"; 
      int index; 

      for(index=0; index<strlen(str); index++){ 
          printf("%c\n",str[index]); 
      } 

  } 

上面的代码生成以下结果。


连接字符串

我们可以将字符串连接成一个字符串。

我们可以从string.h头中使用strcat()函数。


  #include <stdio.h> 
  #include <string.h> 

  void concatenating(); 

  int main(int argc, const char* argv[]) { 

      concatenating(); 

      return 0; 
  } 

  void concatenating(){ 
      printf("====concatenating===\n"); 

      char str1[30] = "hello"; 
      char str2[10] = "wolrd"; 

      strcat(str1,str2); 
      printf("result: %s\n",str1); 

  } 

上面的代码生成以下结果。

字符串转换为数字

字符串类型转换为数字,您可以使用sscanf()函数将String转换为数字。


  #include <stdio.h> 
  #include <string.h> 

  void string_to_numeric(); 

  int main(int argc, const char* argv[]) { 
       
      string_to_numeric(); 

      return 0; 
  } 

  void string_to_numeric(){ 
      printf("====string_to_numeric===\n"); 
      char str1[10] = "10"; 
      char str2[10] = "28.74"; 

      int num1; 
      float num2; 

      sscanf(str1,"%d",&num1); 
      sscanf(str2,"%f",&num2); 

      printf("num1: %d\n",num1); 
      printf("num2: %f\n",num2); 

  } 

上面的代码生成以下结果。

数字转换为字符串

要将数字转换为字符串类型,请使用sprintf()函数。

您可以自动获取String类型。


  #include <stdio.h> 
  #include <string.h> 

  void numeric_to_string(); 

  int main(int argc, const char* argv[]) { 

      numeric_to_string(); 
           
      return 0; 
  } 

  void numeric_to_string(){ 
      int n = 10; 
      float m = 23.78; 

      char num1[10]; 
      char num2[10]; 

      sprintf(num1,"%d",n); 
      sprintf(num2,"% .2f",m); 

      printf("num1: %s\n",num1); 
      printf("num2: %s\n",num2); 

  } 

上面的代码生成以下结果。

字符串解析器令牌

解析String的简单解决方案使用具有delimiter参数的strtok()函数。

例如,你有String数据;分隔符,并希望解析它。


  #include <stdio.h> 
  #include <string.h> 

  void string_parser(); 

  int main(int argc, const char* argv[]) { 

      string_parser(); 

      return 0; 
  } 

  void string_parser(){ 
      char cities[40] = "Tokyo;Berlin;London;New York"; 
      char token[2]=";"; 
      char* city; 

      printf("cities: %s\n",cities); 

      city = strtok(cities, token); 
      while(city  != NULL){ 
          printf("%s\n", city ); 
          city = strtok(NULL, token); 
      } 

  } 

上面的代码生成以下结果。

复制字符串数据

您可以从String数据中复制一些字符。

使用strcpy()和strncpy()函数。


  #include <stdio.h> 
  #include <string.h> 

  void string_copy(); 

  int main(int argc, const char* argv[]) { 

      string_copy(); 

      return 0; 
  } 

  void string_copy(){ 
      char str[15] = "Hello world"; 
      char new_str[20]; 

      strcpy(new_str,str); 
      printf("str: %s\n",str); 
      printf("new_str: %s\n",new_str); 

      memset(new_str,  "\0", sizeof(new_str)); 
      strncpy(new_str,str,5); 
      printf("strncpy-new_str: %s\n",new_str); 

  } 

上面的代码生成以下结果。

将字符串转换为数字

C标准库stdlib.h提供了一些函数,用于将字符串转换为数字。

atof - 将字符串转换为浮点数。

atoi - 将字符串转换为整数。

这两个函数都在下一个程序中演示。


#include <stdio.h> 
#include <stdlib.h> 
main()  
{ 
   char *str1 = "123.79"; 
   char *str2 = "55"; 
   float x; 
   int y; 
   printf("\nString 1 is \"%s\"\n", str1); 
   printf("String 2 is \"%s\"\n", str2); 
   x = atof(str1); 
   y = atoi(str2); 
   printf("\nString 1 converted to a float is %.2f\n", x); 
   printf("String 2 converted to an integer is %d\n", y); 
}  //end main  

上面的代码生成以下结果。

strcmp()

strcmp()函数比较两个字符串的相等性。


#include <stdio.h> 
#include <string.h> 
main() 
{ 
   char *str1 = "A"; 
   char *str2 = "A"; 
   char *str3 = "!"; 
   printf("\nstr1 = %s\n", str1); 
   printf("\nstr2 = %s\n", str2); 
   printf("\nstr3 = %s\n", str3); 

   printf("\nstrcmp(str1, str2) = %d\n", strcmp(str1, str2)); 
   printf("\nstrcmp(str1, str3) = %d\n", strcmp(str1, str3)); 
   printf("\nstrcmp(str3, str1) = %d\n", strcmp(str3, str1)); 
   if ( strcmp(str1, str2) == 0 ) 
      printf("\nLetter A is equal to letter A\n"); 
   if ( strcmp(str1, str3) > 0 ) 
      printf("Letter A is greater than character !\n"); 
   if ( strcmp(str3, str1) < 0 ) 
      printf("Character ! is less than letter A\n"); 
}  // end main 

strcmp()函数使用两个字符串作为参数,并使用相应的字符代码进行比较。

比较两个字符串后,strcmp()函数返回一个单一的数值,它指示第一个字符串是否等于,小于或大于第二个字符串。

下表更详细地描述了strcmp()函数的返回值。

示例函数返回值描述
strcmp(string1,string2)0string1等于string2
strcmp(string1,string2)<0string1小于string2
strcmp(string1,string2)>0string1大于string2

上面的代码生成以下结果。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号