字符串处理函数 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关键字 ③return后面的值也可以是一个表达式     程序执行流程:   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 接收传递从参数的内容
#include <stdio.h>
extern int add(int a,int b);
extern int sub(int a,int b);
extern int mux(int a,int b);
extern int dive(int a,int b);
int main()
{
    int a,b,value;
    char name;
    scanf("%s%d%d",&name,&a,&b);
    switch(name)
    {
        case '+':
        value=add(a,b);
printf("%d+%d=%d\n",a,b,value);
        break;
        case '-':
        value=sub(a,b);
printf("%d-%d=%d\n",a,b,value);
        break;
        case '*':
        value=mux(a,b);
printf("%d*%d=%d\n",a,b,value);
        break;
        case '/':
        value=dive(a,b);
printf("%d/%d=%d\n",a,b,value);
        break;
        default:
        printf("出错,请重新输入!");
        break;
    }
    return 0;
}
int add(int a,int b)
{
    return a+b;
}
int sub(int a,int b)
{
    return a-b;
}
int mux(int a,int b)
{
    return a*b;
}
int dive(int a,int b)
{
    if(!b)
    {
        printf("出错,分母不得为0!");
        break;
    }
    return a/b;
}
#include <stdio.h>
#include <string.h>
extern int my_strcmp(char s1[], char s2[]);
int main()
{
//char s1,s2;
int flag;
char s1[],s2[];
char s1[] ="hello world";
char s2[]="hello abc";
flag=my_strcmp(s1, s2);
 ​if(flag == 0)
​{
​    printf​("%s等于%s\n", s1,s2);
​}
​else if(flag > 0)
​{
​​printf("%s大于%s\n", s1, s2);
​}
​else
​{
​​printf("%s小于%s\n", s1, s2);
​}
​return 0;
}
int my_strcmp(char s1[],char s2[])
{
     int i;
     i=strcmp(s1,s2);
     return i;
}

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。