字符串处理函数
1、strlen函数:计算目标字符串长度,
格式:strlen(字符指针指向区域)
注意:①不包含字符串结束符‘\0’
②需要导入库<string>
2.拷贝函数:strcpy 参数: 目标字符串 源字符串
格式strcpy(目标字符串 ,源字符串 );
注拷贝字符串时会将/0也拷贝
有限拷贝:strncpy 参数: 目标字符串 源字符串 字符长度
格式:strcpy(目标字符串 ,源字符串 ,长度);
成功:返回目标字符串的首地址
失败:NULL
注:有限拷贝不会将\0拷贝到目标字符串中
3、追加函数/有限追加函数 strcat/strncat:
格式:strcat(目标字符串 ,源字符串) // 将源字符串连接到目标字符串的尾部
格式:strncat(目标字符串 ,源字符串,长度n)//将源字符串前n个连接到目标字符串的尾部
注:①被追加的目标字符串 需要有足够空间
②追加中 先去掉 目标字符串中的 \0 再进行追加将 源字符串中的\0也追加上
③有限追加注意:有限追加也会将\0追加
4、比较函数/有限比较函数strcmp/strncmp
格式:strcmp(字符串 1,字符串 2)// 比较1与2
格式:strcmp(字符串 1,字符串 2,比较长度n) // 比较1与2前n个字符串
注: ①在不同操作系统中strcmp结果会不同 有的返回1 0 -1 还可能返回ASCII差值
②字符串操作都是在\0结尾之前
5、字符串转化函数 sprintf / sscanf:
数据格式化后放入在字符串中
格式: sprintf(目标字符串 ,"参数",源字符串 )// 根据参数将源字符串来转换并格式化数据,然后将结果输出到指定的目标字符串中
scanf(目标字符串 ,"参数",&源字符串 ) //根据参数将源字符串来转换并格式化数据,然后将结果输入到指定的目标字符串中
注意:①sscanf与scanf一样需要在程序开始加入警告
②成功时返回具体个数 失败 -1
6、在字符串中查找字符的位置 strchr函数:
格式: strchar(字符串,‘字符’) // 失败返回空的值(UNLL)
注意 :①找汉字时格式 “ 汉字 ”,是双引号非单引号
② 字符使用单引号引起来
7、在字符串中查找另外字符串的位置 strstr函数:
格式 strstr(源字符串,“匹配字符串”)
注意: 匹配字符串使用双引号引起来
8、字符串分割 strtok函数
格式 strtok(目标字符串,“目标字符串中所包含的字符”)
注意:① 将切割点用\0表示,切完之后会破坏原先字符串样式
②当连续出现多个分割字符时只替换第一个为\0
9、atoi 转整形 /atof转 双精度 /atol转long类型 :
格式: atoi(目标字符串) / atof(目标字符串) / atol(目标字符串)
注意:①跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符(‘\0‘)才结束转换
函数:
函数的创建与定义
1、案例冒泡排序--------将两个冒泡程序提取相同部分 1 数组 元素个素 2 循环条件
2、创建名 函数名 , 格式 函数名(参数列表) {函数体} 图片:函数封装模块
自定义格式: 返回值类型 函数名称(参数) {函数体 return返回值}
注意 ①数组作为函数参数,可以退化为函数名/可以退化为指针
②在定义函数时指定的形参,可有可无,根据函数的需要来设计,如果没有形参,圆括号内容为空,或写一个void关键字
程序执行流程:
1、函数调用时在未出现函数调用时,它们并不占内存中的存储单元
2、形参:函数的定义中的参数列表中的数据称为函数的形式参数 ,
3、实参:实际参数 ;
4、实参会影响会形参的值 形参不会影响实参的值
4、理论机制:形参接收实参 在函数内部进行运算。
注意:实参会在函数执行完成在内存中会被释放掉
函数的声明和调用
1、声明: 声明函数的类型
声明的作用则是把函数的名字、函数类型以及形参的个数、类型和顺序(注意,不包括函数体)通知编译系统
2、定义:函数的定义就是对函数公功能的实现
3、调用 :执行函数 需要完成某项功能
注:①一个函数只能被定义一次,但可以声明多次
②函数定义的位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。
4、函数的返回值
①如果函数返回的类型和return语句中表达式的值不一致,则以函数返回类型为准,即函数返回类型决定返回值的类型。对数值型数据,可以自动进行类型转换。
注意:如果函数返回的类型和return语句中表达式的值不一致,而它又无法自动进行类型转换,程序则会报错。
5、函数的参数列表
①在定义函数时指定的形参,必须是,类型+变量的形式
②作用域不同和可以使用相同的变量名
6、return 和 exit(0)
在main函数中调用exit和return结果是一样的,但在子函数中调用return只是代表子函数终止了,在子函数中调用exit,那么程序终止
函数分类 系统 用户定义
作用:函数的使用可以省去重复代码的编写,降低代码重复率
函数名 见名知意
函数形参 不能给形参赋值
定义函数时 制定的形参 必须是 ,类型+变量的形式
函数的实参与形参
-
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。
-
实参出现在主调函数中,进入被调函数后,实参也不能使用。
-
实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。
-
在调用函数时,编译系统临时给形参分配存储单元。调用结束后,形参单元被释放。
-
实参单元与形参单元是不同的单元。调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参变量。实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。
函数样式:
1、有参无返回值 viod
2、有参数有返
3、无参无返
注意:①如果是调用无参函数,则不能加上“实参”,但括号不能省略
②如果实参表列包含多个实参,则各参数间用逗号隔开
③实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。实参与形参按顺序对应,一对一地传递数据。
多个文件联合编程
1、在文件中函数都是全局函数
2、文件 作用:1 函数变量的声明 2 系统库的调用
3、 vi 编译格式:gcc -o 可执行程序 文件1.c文件2.c 头文件.h
4、#pragma once 头文件只包含一次
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
#endif___SOMEFILE_H__
5、程序被唤醒起来可以传递附带参数
6、argc 接收传递参数的个数
7、 argv 接收传递从参数的内容
No.7 字符串处理函数和函数
原文:https://www.cnblogs.com/yangchenyu2000/p/10705715.html