主要内容 #
这节课,我们主要来介绍一些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;
}
习题 #
