12.29C语言 字符指针下

2023-12-29 23:59:40

一.字符串的复制,连接和比较及字符串长度

在头文件string.h中定义

1.字符串复制函数

char *strcpy(char *s1,char *s2)

该函数把字符串s2复制到s1,参数s1必须是字符型数组基地址(??),参数s2可以使字符数组名或者字符串常量,如strcpy(s1,"key")

#include <stdio.h>  
#include <string.h>  //在头文件string.h中声明
  
int main() {  
    char src[] = "Hello, World!";  
    char dest[20];  
  
    strcpy(dest, src);  //把src存储的字符串复制到dest中
  
    printf("Source string: %s\n", src);  
    printf("Copied string: %s\n", dest);  //输出Hello,World!
  
    return 0;  
}

二.字符串连接函数strcat(s1,s2)

strcat(s1,s2),参数s1必须是字符型数组基地址(??),参数s2可以使字符数组名或者字符串常量,如strcpy(s1,"key").strcat()函数将字符串s2连接到s1后面,此时,s1原有的结束符'\0'被放置在连接后的结束位置上.数组s1的长度要足够大,一遍存放连接后的新字符串.

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

int main() {
    char dest[50] = "Hello ,";  // 目标字符串,分配了50个字符的空间  
    const char* src = "World!";  // 源字符串  

    strcat(dest, src);  // 将 src 连接到 dest 的末尾  

    printf("%s\n", dest);  // 输出连接后的字符串  

    return 0;
}

他不会给字符连接处加空格,而是直接连接起来,需注意

三.字符串比较函数strcmp(s1,s2)

strcmp(s1,s2)对参数要求与前两个不一样,函数strcmp()中的参数s1s2可以是字符数组名或字符串常量.函数strcmp返回一个整数给出字符串s1s2比较的结果,

1.s1=s2,返回0;

2.s1>s2返回一个正数

3.s1<s2返回一个负数

设str1和str2都是一个字符串,在C语言中,str1和str2直接用=<>比较的是两个字符串的起始地址,而strcmp(str1,str2)==0>0<0比较的是比较两个字符串的内容

比较规则是:从两个字符串的首字符开始,依次比较相应的字符(的ASCII码),直到出现不同的字符或者遇到'\0'为止,都相同返回0;否则,以第一个不同字符的比较结果为准,返回两个字符的差.(一般是-1 0 1)

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

int main() {
    const char* str1 = "Hello";//const保护常量不被修改
    const char* str2 = "World";
    const char* str3 = "Hello";

    int result1 = strcmp(str1, str2);  // 比较 "Hello" 和 "World"  
    int result2 = strcmp(str1, str3);  // 比较 "Hello" 和 "Hello"  

    printf("Result of strcmp(str1, str2): %d\n", result1);  // 输出负数,因为 "Hello" < "World"  
    printf("Result of strcmp(str1, str3): %d\n", result2);  // 输出 0,因为 "Hello" == "Hello"  

    return 0;
}

四.字符串长度函数strlen(s1)

参数s1可以是字符数组名或者字符串常量.函数strlen()返回字符串s1的'\0'之前的字符个数,例如strlen("happy")的值为5

通过include<string.h>声明

文章来源:https://blog.csdn.net/lanssssss/article/details/135280438
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。