字符串处理函数的代码总结

来源:互联网 发布:linux rar解压软件 编辑:程序博客网 时间:2024/05/22 04:28

gets

gets解决了scanf的不能输入空格的问题。但gets不能实现将输入的字符串转化为其他类型的功能。

 

fgets函数

gets函数不检查预留缓冲区是否能够容纳用户实际输入的数据。多出来的字符会导致内存溢出,fgets函数改进了这个问题。

由于fgets函数是为读取文件设计的,所以读取键盘时没有gets那么方便

    char s[100] = {0 };

    fgets(s, sizeof(s), stdin);

 

puts函数

puts函数打印字符串,与printf不同,puts会在最后自动添加一个’\n’

    char s[] = "hello world";

    puts(s);

 

fputs函数

fputs是puts的文件操作版本,

    char s[] = "hello world";

    fputs(s, stdout);

 

补充

字符’0’的ASCII码值是30;0x30

gets()函数

atoi函数用到的头文件是stdlib.h

char buf[1024] = { 0 };

   //scanf("%s", buf);//空格当回车处理

   gets(buf);//字符串输入 中间可以有空格

   printf("%s\n", buf);

   return 0;

int a = 0;

   int b = 0;

   char buf[4] = { 0 };

   gets(buf);

   a = atoi(buf);

   gets(buf);

   b = atoi(buf);

   printf("%d\n", a + b);

atoi函数把数组转换为整数

 

fgets()函数

char buf[10] = { 0 };

   fgets(buf, sizeof(buf), stdin);//第三个参数的意思是从标准输入设备读取字符串

   printf("%s%d\n", buf, 10);

   puts();//put函数只能输出字符串,不能像printf那样进行转义输出

 

strlen,字符串长度

size_t  strlen(const char * _Str);

返回不包含字符串结尾’\0’的字符串长度

 

char buf[] = "hello4444332223";

   //字符串逆置

   for (i = 0; i < (sizeof(buf)-1) / 2; i++)

   {

      char tmp = buf[i];

      buf[i]= buf[(sizeof(buf)-2) - i];

      buf[(sizeof(buf)-2) - i] = tmp;

   }

 

strcat,字符串追加

size_t  strcat(char * _Str1, const char * _Str2);

将参数_Str2追加到_Str1后尾

strncat,字符串有限追加

size_t  strncat(char * _Str1, const char * _Str2, size_t len);

 

strcmp,字符串比较

int strcmp(const char * _Str1,constchar * _Str2);

比较两个字符串是否相等,相等返回0,不等返回非0

相等返回0

如果第一个串的字符大于第二个串的字符,返回1,否则返回-1

strncmp,字符串有限比较

 

strcpy字符串拷贝

char *strcpy(char * _Str1, const char * _Str2);

将参数_Str2拷贝到参数_Str1中

strncpy字符串有限拷贝

 

sprintf,格式化字符串

和printf函数功能类似,printf函数将格式化结果输出到屏幕,sprintf将格式化结果输出到字符串

sscanf格式化输入

 

strchr查找字符

char * strchr(char *_Str,int_Ch);

在参数_str中查找参数_Ch指定字符,找到返回字符_Ch在_Str中所在位置,没有找到返回NULL;

strstr查找子串

char * strstr(char *_Str,constchar * _SubStr)

在参数_str中查找参数_SubStr指定子串,找到返回子串在_Str中所在位置,没有找到返回NULL;

 

strtok分割字符串

字符在第一次调用时strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL每次调用成功则返回指向被分割出片段的指针

   char buf[] = "abc@defg@igk";

   char *p = strtok(buf, "@");;

   while (p)

   {

      printf("%s\n", p);

      p = strtok(NULL, "@");

   }

 

0 0