【C语言】常用的字符换处理函数

gets函数

函数声明

char * gets( char * str);

函数功能

从键盘读入用户输入的字符串,存入字符数组,返回值是字符数组的起始地址

函数调用格式

gets(字符数组);

调用时应传递一个字符数组的首地址。

gets函数读入用户输入的字符串时,会读取换行符之前所有的字符(不包括换行符本身),并在字符串的末尾添加空字符‘\0’,所以它的读取结束符就是 换行符,而scanf函数的读取结束符是 换行符和空格符,所以scanf函数接收的字符串不能包括空格,而gets函数接收的字符串可以有空格

代码示例

#include
int main()
{
	char arr[10];
	gets(arr);
	return 0;
 } 

 puts函数

函数声明

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;
 } 

strcat函数

函数声明

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

strcpy和strncpy函数

函数声明

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

strcmp函数

函数声明

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.

strlen函数

函数声明

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(空格也是一个字符哦)

strchr函数

函数声明

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!!!

你可能感兴趣的:(c语言,开发语言,学习)