跳至正文
View Categories

2 min read

主要内容 #

这节课,我们主要来介绍一些C/C++中内置的一些字符串处函数。

一、char* strcat(char* dst, const char* src) #

函数功能:

  • 将字符串 src 连接到字符串 dst 后面。 dst 的值被改变了
  • 函数返回 字符串 dst 的指针

详见下面例程:

#include < iostream >
#include < cstring >

using namespace std;

int main()
{
    char dashima1[] = "aaa";
    char dashima2[] = "bbbb";
    char* dashima3;

    cout << "sizeof(dashima1)=" << sizeof(dashima1)<< endl;
    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    
    dashima3 = strcat(dashima1, dashima2);            // 【注意理解】1. 上面 dashima1 的变化;2. dashima3 的值
    
    cout << "sizeof(dashima1)=" << sizeof(dashima1)<< endl;
    cout << "dashima1=" << dashima1 << endl;          // 【注意理解】字符串和字符数组不同,字符串的长度不能通过 sizeof 计算
    cout << "dashima2=" << dashima2 << endl;
    cout << "dashima3=";
    for(int i=0; i < 7; ++i)
    {
        cout << dashima3[i];
    }
    cout << endl;
    return 0;
}

输出结果:

sizeof(dashima1)=4
dashima1=aaa
dashima2=bbbb
sizeof(dashima1)=4
dashima1=aaabbbb
dashima2=bbbb
dashima3=aaabbbb

注意:

  • 将字符串 src 连接到字符串 dst 后面。 dst 的值被改变了
  • 函数返回 字符串 dst 的指针
  • 字符串和字符数组不同,字符串的长度不能通过 sizeof 计算

二、char* strncat(char* dst, const char* src, const int n) #

函数功能:

  • 将字符串 src 的前 n 个字符,连接到字符串 dst 后面。 dst 的值被改变了
  • 函数返回 字符串 dst 的指针

详见下面例程:

#include < iostream >
#include < cstring >

using namespace std;

int main()
{
    char dashima1[] = "aaa";
    char dashima2[] = "bbbb";
    char* dashima3;
    
    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    
    dashima3 = strncat(dashima1, dashima2, 2); // 【注意理解】1. 上面 dashima1 的变化;2. dashima3 的值;3. n 的作用
    
    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    cout << "dashima3=";
    for(int i=0; i < 7; ++i)
    {
        cout << dashima3[i];
    }
    cout << endl;
    return 0;
}

输出结果:

dashima1=aaa
dashima2=bbbb
dashima1=aaabb
dashima2=bbbb
dashima3=aaabb

三、char *strcpy(char* dst, const char *src) #

函数功能:

  • 将字符串 src 复制到字符串 dst 。 dst 的值被 src 覆盖了
  • 函数返回 字符串 dst 的指针

详见下面例程:

#include < iostream >
#include < cstring >

using namespace std;

int main()
{
    char dashima1[] = "aaa";
    char dashima2[] = "bbbb";
    char* dashima3;

    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    
    dashima3 = strcpy(dashima1, dashima2);    // 【注意理解】1. 上面 dashima1 的变化;2. dashima3 的值
    
    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    cout << "dashima3=";
    for(int i=0; i < 4; ++i)
    {
        cout << dashima3[i];
    }
    cout << endl;
    return 0;
}

输出结果:

dashima1=aaa
dashima2=bbbb
dashima1=bbbb
dashima2=bbbb
dashima3=bbbb

四、char *strncpy(char* dst, const char *src, const int n) #

函数功能:

  • 将字符串 src 中的n个字符复制到字符串 dst 中。 dst 的值被 src 覆盖了
  • 函数返回 字符串 dst 的指针

详见下面例程:

#include < iostream >
#include < cstring >

using namespace std;

int main()
{
    char dashima1[] = "aaa";
    char dashima2[] = "bbbb";
    char* dashima3;

    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    
    dashima3 = strncpy(dashima1, dashima2, 2);    // 【注意】输出的 dashima1 为 "bba"
    
    cout << "dashima1=" << dashima1 << endl;
    cout << "dashima2=" << dashima2 << endl;
    cout << "dashima3=";
    for(int i=0; i < 2; ++i)
    {
        cout << dashima3[i];
    }
    cout << endl;
    return 0;
}

输出结果:

dashima1=aaa
dashima2=bbbb
dashima1=bba
dashima2=bbbb
dashima3=bba

五、读取不定长度的字符 #

请使用之前学习过的 getchar(),完成不定长度的字符输出。

请点击连接,访问大师码 OJ 查看习题。
请计时 10 分钟,请待完成后,往下查看示例程序。

/*
请编程完成后,查看示例程序。





*/

示例程序:

#include < iostream >
#include < cstring >

using namespace std;

int main()
{
    char dashima[200] = "";
    int si=0;
    char c = getchar();
    while('\n' != c)
    {
    	dashima[si] = c;
    	c = getchar();
        ++si; 
    }
    cout << dashima;
    return 0;
}

习题 #

课后练习