编程基础——字符/字符串库函数

编程基础——字符/字符串库函数
1. 求长度
  • C语言使用:strlen(字符数组名)
    求字符数组长度,或者字符串的元素个数
#include<cstdio>
#include<cstring>         //加头文件

int main(){
    
    char str[100];
    scanf("%s", str);    //录入串至数组,以空格或者换行作为结束
    //gets(str);          //录入串至数组,以换行作为结束,空格也录入
    int len=strlen(str);  //strlen(数组名),求出字符数组长度
    printf("%d",len);
    
    return 0;
}

输入:abcd       abcd e  (gets)
输出:4          6
  • C++使用:数组名.size() 
    求string字符串长度,字符串可以按数组来用
#include<iostream>
using namespace std;

int main(){

    string str;
    cin>>str;           //以空格或者换行结束
    int len=str.size();  //数字名.size(),求字符串长度
    cout<<len;

    return 0;
}


2. 字符串比较 strcmp()
  • strcmp(字符数组1,字符数组2)按字典顺序比较两字符数组的大小
    a>b: 返回一正数
    a=b: 返回0
    a<b: 返回一负数
#include<iostream>
#include<cstdio>   //gets头文件
#include<cstring>  //strcmp头文件
using namespace std;

int main(){
    char str1[100],str2[100];
    gets(str1);                 //只录入字符串不需要吸收换行符
    gets(str2);
    int num=strcmp(str1,str2);  
    cout<<num;
    return 0;
}
输入:
abc
ABC
输出:1
  • 字符串1.compare(字符串2)按字典顺序比较两string字符串的大小
    a>b: 返回一正数
    a=b: 返回0
    a<b: 返回一负数
#include<iostream>
using namespace std;

int main(){
    string str1="bbc";
    string str2="ABC";
    int num=str1.compare(str2);
    cout<<num;                  //结果为1,str1>str2
    return 0;
}
输出:1


3. 字符数组复制strcpy()

strcpy(字符数组1,字符数组2),可以把字符数组2的内容复制到字符数组1中

#include<iostream>
#include<cstdio>   //gets头文件
#include<cstring>  //strcpy头文件
using namespace std;

int main(){
    
    char str1[100],str2[100];
    gets(str1);                 //只录入字符串不需要吸收换行符
    gets(str2);                 //先录入数字再录入字符数组需要吸收换行符
    strcpy(str1,str2);
    cout<<str1;                 //可以直接输出字符数组
    return 0;
}
输入:
123
456
输出:
456

4. 字符数组拼接strcat()

strcat(字符数组1,字符数组2)可以将字符数组2的内容放到字符数组1的后面

#include<iostream>
#include<cstdio>   //gets头文件
#include<cstring>  //strcpy头文件
using namespace std;

int main(){

    char str1[100],str2[100];
    gets(str1);                 //只录入字符串不需要吸收换行符
    gets(str2);                 //先录入数字再录入字符数组需要吸收换行符
    strcat(str1,str2);
    cout<<str1;                 //可以直接输出字符数组
    return 0;
}
输入:
123
456
输出:
123456

5. sscanf()与sprintf()

处理字符串利器
sscanf(str, “%d”, &num): 将str字符数组中的内容以"%d"的格式读入数字num
sprintf(str, “%d”, num): 将数字num以"%d"的格式读入到字符数组中

#include<cstdio>
using namespace std;

int main(){
    int num;
    char str[100]="123";
    sscanf(str, "%d", &num);  //把字符数组str内容以"%d"的格式写入num中,从左至右
    printf("%d\n",num);     //123

    int n=456;
    char str1[100];
    sprintf(str, "%d", n);   //把数字n以"%d"的格式写入到str数组中,从右至左
    printf("%s",str);       //456

    return  0;
}

  • 可以像使用scanf()与printf()一样进行复杂格式输入输出
#include<cstdio>
using namespace std;

int main(){
    int n;
    double m;
    char str1[100];
    char str2[100]="2048:3.14,hello";
    sscanf(str2, "%d:%lf,%s", &n,&m,&str1);   //sscanf从左向右拆开
    printf("%d:%.2f,%s\n", n,m,str1);

    int n1=2048;
    double m1=3.14;
    char str3[100]="hello";
    char str4[100];
    sprintf(str4, "%d:%.2lf,%s", n1,m1,str3);  //sprintf从右向左合起
    printf("%s",str4);

    return  0;
}
输出:
2048:3.14,hello
2048:3.14,hello
发布了16 篇原创文章 · 获赞 0 · 访问量 533

猜你喜欢

转载自blog.csdn.net/clfxyz/article/details/105652727