char * gets( char * str);
从键盘读入用户输入的字符串,存入字符数组,返回值是字符数组的起始地址
gets(字符数组);
调用时应传递一个字符数组的首地址。
gets函数读入用户输入的字符串时,会读取换行符之前所有的字符(不包括换行符本身),并在字符串的末尾添加空字符‘\0’,所以它的读取结束符就是 换行符,而scanf函数的读取结束符是 换行符和空格符,所以scanf函数接收的字符串不能包括空格,而gets函数接收的字符串可以有空格。
#include
int main()
{
char arr[10];
gets(arr);
return 0;
}
int puts(const char * str);
puts(字符数组);
将一个字符串(以'\0'结尾)输出到控制台。和printf函数不一样的是,puts函数输出字符串后会自动换行
#include
int main()
{
char arr[10];
gets(arr); //读取字符串
puts(arr); //输出字符换(会自动化换行)
puts("Hello word");//输出Hello word(会自动化换行)
return 0;
}
char * strcat( char * dest,const char * src);
strcat(字符数组1,字符数组2);
把两个字符数组中的字符串连接起来,把字符数组2中的字符串连接到字符数组1中的字符串的后面,结果存放在字符数组1中,返回值是字符数组1的地址。需要注意的是,字符数组1必须要有足够的空间来连接之后的字符串,否则会出现错误。
#include
#include
int main()
{
char arr1[20]="Hello ";
char arr2[] = "word";
strcat(arr1,arr2);
puts(arr1);
return 0;
}
运行结果就是:Hello word
char * strcpy(char * dest,const char * src);
char * strncpy(char * dest,const char * src,int len);
strcpy函数的功能是将以sre为首地址的字符串复制到以dest为首地址的字符串,包括结束符'\0',返回dest地址。所以就相当于第二个字符串把第一个字符串给替换了
strncpy函数的功能是将以sre为首地址的字符串复制len个字符到以dest为首地址的字符数组,就是把第二个字符中的前len个字符替换掉第一个字符串中的前len个字符
strcpy(字符数组1,字符数组2);
strncpy(字符数组1,字符数组2,n);
#include
#include
int main()
{
char arr1[20]="abcdef";
char arr2[20]="ABCDEF";
puts(arr1);
strcpy(arr1,arr2);
puts(arr1);
return 0;
}
输出结果
abcdef
ABCDEF
#include
#include
int main()
{
char arr1[20]="abcdef";
char arr2[20]="ABCDEF";
puts(arr1);
strncpy(arr1,arr2,3);
puts(arr1);
return 0;
}
输出结果
abcdef
ABCdef
int strcmp(const char * str1,const char * str2);
strcmp(字符串1,字符串2);
strcmp是string compare (字符串比较)的缩写,用于比较两个字符串并根据比较结果返回一个整数。
若 字符串1=字符串2,则返回0;
若 字符串1 < 字符串1,则返回负数;
若 字符串1 > 字符串1,则返回正数;
两个字符串自左向右逐个字符相比(比较ASCII码值大小),直到出现不同的字符或遇到'\0'为止
例如:
"a" < "b"
"q">"Q"
"ab"<"abc"
"apple">"banana"
"fine" = "fine"
if (str1 > str2) printf("str1 > str2");
这种写法是错误的
#include
#include
int main() {
char str1[] = "Hello";
char str2[] = "World";
// 比较 str1 和 str2
int result1 = strcmp(str1, str2);
if (result1 == 0) {
printf("str1 and str2 are equal.\n");
} else if (result1 < 0) {
printf("str1 is less than str2.\n");
} else {
printf("str1 is greater than str2.\n");
}
return 0;
}
结果:str1 is less than str2.
size_t strlen(const char * str);
计算字符串的长度,直到空字符(反斜杠)‘\0’,但不包括空字符(反斜杠)‘\0’
strlen(字符串);
#include
#include
int main() {
char s[]="Happy new year";
printf("%d",strlen(s));
return 0;
}
结果:14(空格也是一个字符哦)
char * strchr( const char * str,char ch);
strchr(字符串,字符);
查找指定字符在字符串中第一次出现的位置
如果字符串中包含该字符,函数将返回一个指向该字符第一次出现的位置的字符指针,否则返回空指针(NULL)
#include
#include
int main() {
char s[]="Happy new year";
char *p = strchr(s,'w');
if (*p != NULL)
printf("%c",*p);
else
printf("字符串中没有该字符");
return 0;
}
结果是:w
strstr 函数
函数声明
char * strstr( const char *str1,char *str2);
函数调用格式
strstr(字符串1,字符串2);
函数功能
查找字符串1里是否包含字符串2
如果包含,函数则返回 字符串1中 从字符串2开始到字符串1结束 的字符串,否则返回NULL
代码示例
#include
#include
int main() {
char s[]="Happy new year";
if (strstr(s,"new") != NULL)
printf("%s",strstr(s,"new"));
else
printf("不包含该字符串");
return 0;
}
结果:new year
over!!!