C/C++语言函数学习(4)字符串处理函数

#include <string.h>


函数名称:     strchr
函数原型:     char* strchr(char* str,char ch);
函数功能:     找出str指向的字符串中第一次出现字符ch的位置
函数返回:     返回指向该位置的指针,如找不到,则返回空指针
参数说明:     str-待搜索的字符串,ch-查找的字符


函数名称:     strrchr
函数原型:     char *strrchr(const char *s, int c)
函数功能:     得到字符串s中最后一个含有c字符的位置指针
函数返回:     位置指针


函数名称:     strstr
函数原型:     char* strstr(char* str1,char* str2);
函数功能:     找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)
函数返回:     返回该位置的指针,如找不到,返回空指针


函数名称:     strrev
函数原型:     char *strrev(char *s)
函数功能:     将字符串中的所有字符颠倒次序排列
函数返回:     指向s的指针 


函数名称:     strnset
函数原型:     char *strnset(char *s, int ch, size_t n)
函数功能:     将字符串s中前n个字符设置为ch的值
函数返回:     指向s的指针


函数名称:     strset
函数原型:     char *strset(char *s, int ch)
函数功能:     将字符串s中所有字符设置为ch的值
函数返回:     指向s的指针 


函数名称:     strdup
函数原型:     char *strdup(const char *s)
函数功能:     字符串拷贝,目的空间由该函数分配 

函数返回:     指向拷贝后的字符串指针


字符串数组与字符串指针的区别:

char str[] = "China";
1、创建一个字符串;

2、创建一个变量 str 保存字符串的首地址。

char *str = "China";

定义了一个指向字符串“China”的首地址。

在C语言中,当程序开始运行时,程序会将所有用到的literal string(不知道中文怎么说)自动加载进内存中,所以字符串指针实际指向的是在程序开始运行时就已经在内存中创建的“China”的首地址。因为literal string是存放在constant内存区,任何试图该str的操作都是非法的,编程好的习惯是

const char *str = "China";

#include  <stdio.h>

int main(int argc, char *argv[])
{
    char *str1 = "China";
    char *str2 = "China";
    char ss[] = "China";
    printf("str1: %p\n", str1);
    printf("str2: %p\n", str2);
    printf("ss:   %p\n", ss);

    return 0;
}
运行结果:

str1: 00415750
str2: 00415750
ss:   0012FF40

str1,str2指向同一地址

char str1[] = "China";
char *str2;
strcpy(str2,str1);

这种赋值是错误的,因为指针为野指针。

因此,strrev() 函数的正确用法…………………………………………………………………………







  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

callinglove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值