我想知道如何运用指针在一个字符串中的指定位置插入另一串字符串
例如:
输入:We are students↙ 7↙ SZU ↙
屏幕输出:We are SZU students
#include <stdio.h>
#include <string.h>
void insert_string(char *str1, char *str2, int pos) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int i;
// 将str1中pos位置后的字符向后移动len2个位置
for (i = len1; i >= pos; i--) {
*(str1 + i + len2) = *(str1 + i);
}
// 将str2插入到str1中pos位置
for (i = 0; i < len2; i++) {
*(str1 + pos + i) = *(str2 + i);
}
}
int main() {
char str1[100] = "hello world";
char str2[100] = "beautiful ";
int pos = 6;
printf("插入前的字符串:%s\n", str1);
insert_string(str1, str2, pos);
printf("插入后的字符串:%s\n", str1);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:回答:
可以通过指针操作来实现在指定位置插入字符串的操作,具体步骤如下:
char source[] = "We are students";
char target[BUFSIZ] = "";
char *insert = "SZU";
int source_len = strlen(source);
int insert_len = strlen(insert);
int pos = 7;
int target_len = source_len + insert_len;
char *new_str = (char*) malloc(target_len + 1);
memcpy(new_str, source, pos);
memcpy(new_str + pos, insert, insert_len);
memcpy(new_str + pos + insert_len, source + pos, source_len - pos + 1);
printf("%s\n", new_str);
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char source[] = "We are students";
char target[BUFSIZ] = "";
char *insert = "SZU";
int source_len = strlen(source);
int insert_len = strlen(insert);
int pos = 7;
int target_len = source_len + insert_len;
char *new_str = (char*) malloc(target_len + 1);
memcpy(new_str, source, pos);
memcpy(new_str + pos, insert, insert_len);
memcpy(new_str + pos + insert_len, source + pos, source_len - pos + 1);
printf("%s\n", new_str);
free(new_str);
return 0;
}
当输入 "We are students",位置:7,待插入字符串:"SZU",则输出为 "We are SZU students"。