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() 函数的正确用法…………………………………………………………………………







你可能感兴趣的:(C/C++语言函数学习(4)字符串处理函数)