1.关于原生函数实现字符串的相关问题
这个事一道OJ题目,也是我今天下午花了很长的这个时间的一个题目,但是其实这个仅仅是我在学习这个C语言的时候可能会做到这样的题目,我没有想到学习了CPP之后,还是需要使用原生的函数实现这个字符串的相关的题目的设计;

下面的这个是我们的CPP实现的字符串的这个相关的要求:
这个CPP实现起来我觉得还是相对而言比较容易的,主要就是使用我们的insert函数确定这个插入的位置即可,size函数确定这个字符串的字符数量,整体上这个输入是没有问题的cion使用起来也是非常的方便;
cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string a, b;
int n;
cin >> a >> n >> b;
if (a.size() > 100) {
cout << 100 << endl;
} else {
cout << a.size() << endl;
}
a = a.insert(n - 1, b);
cout << a << endl;
for (int i = a.size() - 1, j = 1; i >= 0; i--, j++) {
if (a[i] == 'x') {
cout << j << endl;
break;
}
}
return 0;
}
下面的这个是原生的函数的代码实现的方法:主要就是使用C语言里面的和字符串相关的那些函数
cpp
#include <stdio.h>
#include <string.h>
int main() {
char A[10001];
char B[10001];
char C[20002];
int N;
// 读取字符串A
fgets(A, sizeof(A), stdin);
A[strcspn(A, "\n")] = '\0';
// 读取插入点N
scanf("%d", &N);
getchar();
// 读取字符串B
fgets(B, sizeof(B), stdin);
B[strcspn(B, "\n")] = '\0';
int lenA = strlen(A);
// 功能1:输出字符串A的长度(如果大于100则输出100)
if (lenA > 100) {
printf("100\n");
}
else {
printf("%d\n", lenA);
}
//在我们的这个字符串的指定位置拆这个对应的字符
int i, j;
for (i = 0; i < N - 1; i++) {
C[i] = A[i];
}
for (j = 0; B[j] != '\0'; j++) {
C[i++] = B[j];
}
for (; A[i - j] != '\0'; i++) {
C[i] = A[i - j];
}
C[i] = '\0';
printf("%s\n", C);
// 功能3:查找字符串C中从右到左第一个出现字母x的位置AxxxAAAAA
int pos = 0;
int lenC = strlen(C);
for (i = lenC-1; i >= 0; i--) {
if (C[i] == 'x') {
pos = i + 1;
break;
}
}
printf("%d\n", lenC-pos+1);
return 0;
}