一个字符串每隔两位插入一个*用c语言写
时间: 2023-08-31 08:24:23 浏览: 205
### 回答1:
以下是一个用 C 语言实现的每隔两位插入 * 的函数:
```c
#include <stdio.h>
#include <string.h>
void insert_star(char *str) {
int len = strlen(str);
int i;
for (i = 2; i < len; i += 3) {
memmove(str + i + 1, str + i, len - i);
str[i] = '*';
len++;
}
}
int main() {
char str[] = "1234567890";
insert_star(str);
printf("%s\n", str);
return 0;
}
```
这个函数的思路是,从第三个字符开始,每隔两个字符插入一个 *,并且将后面的字符都往后移动一位。需要注意的是,每插入一个 *,字符串的长度会增加一位,因此需要在循环中更新字符串的长度。
### 回答2:
可以使用C语言编写一个函数,接受一个字符串作为参数,在每隔两位插入一个*,然后返回新的字符串。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* insertStar(const char* str) {
int len = strlen(str);
char* newStr = (char*)malloc(sizeof(char) * (len*2 + 1)); // 分配足够的空间存储新字符串(每隔两位插入1个*)
int index = 0;
for (int i = 0; i < len; ++i) {
newStr[index++] = str[i]; // 拷贝原字符串的字符
if (i % 2 == 1 && i != len - 1) {
newStr[index++] = '*'; // 每隔两位插入一个*
}
}
newStr[index] = '\0'; // 添加字符串结束符
return newStr;
}
int main() {
char str[] = "abcdefghi";
char* newStr = insertStar(str);
printf("%s\n", newStr);
free(newStr); // 记得释放内存
return 0;
}
```
输出结果为:"ab*c*de*f*gh*i"。
### 回答3:
```c
#include <stdio.h>
void insertStar(char* str) {
char newStr[600]; // 创建一个新的字符串,用于存放原字符串和插入的*
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++, j++) {
newStr[j] = str[i]; // 将原字符串的字符复制到新的字符串中
if (i % 2 == 1) {
j++; // 跳过插入的位置,j的值+1
newStr[j] = '*'; // 在新字符串的插入位置插入*
}
}
newStr[j] = '\0'; // 在新字符串的末尾加入字符串结束符
printf("插入*后的字符串为:%s\n", newStr);
}
int main() {
char str[300]; // 声明一个字符串,用于存放输入的数据
printf("请输入待插入*的字符串:");
scanf("%s", str); // 从控制台获取输入的字符串
insertStar(str); // 调用函数插入*
return 0;
}
```
阅读全文