输入一个n判断字符串,前面有几个*,如果n>字符串前的*,就替换为n个,n<字符串前的*,就什么都不做,用C语言函数的形式写
时间: 2023-05-25 19:06:40 浏览: 61
```c
void replace_star(char *str, int n) {
int num_star = 0;
while (*str == '*') {
num_star++;
str++;
}
if (n > num_star) {
for (int i = 0; i < n - num_star; i++) {
printf("*");
}
}
printf("%s", str);
}
```
示例输出:
```c
char str[] = "***Hello world!";
replace_star(str, 5); // 输出:*****Hello world!
replace_star(str, 2); // 输出:***Hello world!
replace_star(str, 0); // 输出:***Hello world!
```
相关问题
输入字符串s和字符串sub,判断字符串s中是否存在sub子串,若存在,将字符 串s中第一个sub子串的所有字符替换成'*',并输出变换后的字符串,否则输出"不存在该 子串! "。C语言
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 首先,创建一个函数,例如`replace_substring`,接受两个参数:`char *s`(字符串s的指针)和`const char *sub`(子串sub的指针)。
```c
#include <stdio.h>
#include <string.h>
void replace_substring(char *s, const char *sub) {
// 检查子串是否为空
if (!*sub) {
printf("不存在该子串!\n");
return;
}
size_t sub_len = strlen(sub);
size_t s_len = strlen(s);
// 使用滑动窗口搜索子串
for (size_t i = 0; i <= s_len - sub_len; ++i) {
if (strncmp(s + i, sub, sub_len) == 0) { // strncmp比较两个字符串是否相等
// 找到子串的位置,开始替换
strncpy(s + i, "*", sub_len); // 替换子串为*
s[i + sub_len] = '\0'; // 更新字符串长度
break;
}
}
// 输出处理后的字符串
printf("%s\n", s);
}
```
2. 调用`replace_substring`函数,并传入用户提供的字符串和子串:
```c
int main() {
char str[] = "Hello World, this is a test.";
const char sub[] = "World";
replace_substring(str, sub);
return 0;
}
```
在这个例子中,如果`sub`在`s`中找到,它会被替换为`*`;如果没有找到,则会输出提示信息"不存在该子串!"。
编写一个C语言程序,使任意输入字符串,将该字符串中"yes"替换成"no".
好的,这是一个简单的C语言程序,可以实现你的要求:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 定义字符串最大长度
char* replace(char* str) { // 实现字符串替换的函数
char* ptr;
if ((ptr = strstr(str, "yes")) != NULL) { // 判断是否需要替换
strcpy(ptr, "no"); // 替换
strcat(ptr+2, str+ptr-str+3); // 将后面的字符串拼接回去
}
return str;
}
int main() {
char str[MAX_LEN];
printf("请输入字符串:");
fgets(str, MAX_LEN, stdin); // 从标准输入读取字符串
replace(str); // 调用替换函数
printf("替换后的字符串为:%s", str); // 输出结果
return 0;
}
```
你可以输入任意字符串,并在其中包含几个"yes",程序会自动将它们替换成"no"。注意,这个程序只会替换第一个"yes",如果字符串中有多个"yes"需要替换,可以考虑用循环实现。
阅读全文