声明了库函数,我们就可以使用gets()、puts()这样的基本字符串输入输出函数,但是这里面还包含了许多实用的对字符串操作的函数,通过简单调用便可以省去了自己编写的繁琐;
本文主要介绍以下几类字符串函数(可适当筛选食用~):
- 字符串复制(替换)函数
- 字符串前n位复制(替换)函数
- 字符串长度计算函数
- 字符串比较函数
- 字符串前n位比较函数
- 字符串连接函数
- 字符串前n位连接函数
- 使用函数将整型/实数型数据映射到字符串中(add)
****************************************************************************************************************************************
在详细说明前首先附上全部代码,小伙伴们可以先自行分析(这样效果会更好哟~)
如果有不懂的地方可以再看下面的分析:
#include <stdio.h>
#include <string.h>
void sprintf1() //别急别急,文章最后有分析
{
char s[20];
int a=12345;
double b=12345.12345;
sprintf(s,"%d",a);
puts(s);
printf("\n");
sprintf(s,"%.2f",b);
puts(s);
}
void strcpy1()
{
char str1[20]="12345";
char str2[20]="abcdefg";
strcpy(str2,str1);
puts(str2);
}
void strncpy1()
{
char str1[20]="12345";
char str2[20]="abcdefg";
strncpy(str2,str1,5);
puts(str2);
}
void strlen1()
{
char str[20]="0123456";
printf("*****");
printf("%d",strlen(str));
printf("*****");
}
void strcmp1()
{
char str1[20]="0123456";
char str2[20]="0123465";
printf("%d",strcmp(str1,str2));
}
void strncmp1()
{
char str1[20]="0123456";
char str2[20]="0123465";
printf("%d",strncmp(str1,str2,5));
}
void strcat1()
{
char str1[20]="01234";
char str2[20]="+123456";
strcat(str1,str2);
puts(str1);
}
void strncat1()
{
char str1[20]="01234";
char str2[20]="+123456";
strncat(str1,str2,4);
puts(str1);
}
int main()
{
sprintf1();
printf("\n");
strcpy1();
printf("\n");
strncpy1();
printf("\n");
strlen1();
printf("\n");
printf("\n");
strcmp1();
printf("\n");
printf("\n");
strncmp1();
printf("\n");
printf("\n");
strcat1();
printf("\n");
strncat1();
printf("\n");
}
字符串复制函数 strcpy() :
与其称它为字符串复制函数,我觉得倒不如称它为字符串替换函数更合适,因为在复制的时候也会将被复制的字符串的最后一个结束符‘\0’传入,接下来先看看下面代码:
void strcpy1()
{
char str1[20]="12345";
char str2[20]="abcdefg";
strcpy(str2,str1);
puts(str2);
}
该函数需要输入两个参数(上面的两个字符串str2和str1),
之所以把str1放在后面,是因为该函数是将str1的字符串复制给前面的str2,然后str2就完全被str1给替换了。
字符串前n位复制函数 strncpy() :
这里一眼就可以看到与上面的字符串(全部)复制函数的不同,用法如果看了上面的总程序后应该就了熟于心了,
但是一定有人直接跳到这里来了(有木有~~),我就再讲一讲吧,下面先看代码:
void strncpy1()
{
char str1[20]="12345";
char str2[20]="abcdefg";
strncpy(str2,str1,5);
puts(str2);
}
和上面的用法相比,这个函数需要传入三个参数,
前两个和上面一致,最后一个整型数据n(程序里用了5)的功能是控制字符串str1的传入位数(前n位);
这里和上面的那个全部复制的函数还是有一点差别的,因为被复制字符串的最后一位结束符'\0'并没有被传进来,说以这个代码输出的结果就会为:"12345fg",下面附上运行结果图:
字符串长度计算函数 strlen() :
代码如下,该函数返回的是字符串字符的数量,下面的输出结果为7;
void strlen1()
{
char str[20]="0123456";
printf("*****");
printf("%d",strlen(str));
printf("*****");
}
字符串比较函数strcmp()与字符串前n位比较函数strncmp():
代码如下,因为和上面原理一样,我在这就直接放在一起了,就不再多介绍了~
(什么?你又直接跳到这里来了?好吧好吧,鼠标一滑看看上面的解释吧~)
void strcmp1()
{
char str1[20]="0123456";
char str2[20]="0123465";
printf("%d",strcmp(str1,str2));
}
void strncmp1()
{
char str1[20]="0123456";
char str2[20]="0123465";
printf("%d",strncmp(str1,str2,5));
}
我这里想说一下这里输出的返回值问题,比较相同时返回0,不同时会返回-1;
字符串连接函数strcat()与字符串前n位连接函数strncat():
代码如下,这也快到最后了,放上结果自行分析吧~~~
void strcat1()
{
char str1[20]="01234";
char str2[20]="+123456";
strcat(str1,str2);
puts(str1);
}
void strncat1()
{
char str1[20]="01234";
char str2[20]="+123456";
strncat(str1,str2,4);
puts(str1);
}
最后就是在总程序开头的那一个特殊的函数,是不是与printf()函数很像?是不是很好记~
代码如下,这好像也没什么要解释的呀~就一个像一个输出语句的函数呀~~
但是还是得说一下,这个并不是输出语句,不要一激动理解错了,
该函数需要两个参数(咦?不是三个嘛?其实认为3个也是可以的~~),然后注意中间的那个用双引号括起来的部分,它是为了控制输入的格式,这里不将其认定为参数。
千万别把双引号括在外面了,说着不会,但是手一抖还是很容易的~~(好了不多说了,自己多多注意就好~)
对了对了,这函数是包含在库函数"stdio.h"中的哟~忘记说了~
void sprintf1()
{
char s[20];
int a=12345;
double b=12345.12345;
sprintf(s,"%d",a);
puts(s);
printf("\n");
sprintf(s,"%.2f",b);
puts(s);
}
到这里,文章也结束了,如果有不懂的地方或说错的地方可以留言指出,看到我就会回答的~~
****************************************************************************************************************************************
最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************