本题要求实现一个删除字符串中的指定字符的简单函数。 函数接口定义: void delchar( char *str, char c ); 其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。 裁判测试程序样例: #include <stdio.h> #define MAXN 20 void delchar( char *str, char c ); void ReadString( char s[] ); /* 由裁判实现,略去不表 */ int main() { char str[MAXN], c; scanf("%c\n", &c); ReadString(str); delchar(str, c); printf("%s\n", str); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: a happy new year 输出样例: hppy new yer
时间: 2024-01-28 22:05:36 浏览: 59
下面是删除字符串中指定字符的函数delchar的实现:
```c
void delchar(char *str, char c) {
if (str == NULL) return;
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
```
该函数使用双指针的方法,i指向源字符串的当前字符,j指向目标字符串的当前位置。当源字符串的当前字符不等于待删除字符时,将其拷贝到目标字符串中。最后,将目标字符串的末尾置为'\0',表示字符串结束。
相关问题
c语言编写函数,对于给定的字符串,用指定字符替换该字符串中的数字字符。 函数接口定义: void replace_num ( char s[], char c ); 用指定字符 c 替换该字符串 s 中的数字字符。 裁判测试程序样例: #include <stdio.h> #include <string.h> void replace_num ( char s[], char c ); int main() { char str[81],ch; gets (str); ch=getchar(); replace_num(str,ch); puts(str); } /* 请在这里填写答案 */ 输入样例: abc0AB9 $ 输出样例: abc$AB$
以下是函数实现代码:
```c
void replace_num(char s[], char c) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
if (s[i] >= '0' && s[i] <= '9') { // 如果该字符是数字字符
s[i] = c; // 用指定字符替换
}
}
}
```
函数的思路是遍历给定字符串 `s`,判断每个字符是否为数字字符。如果是数字字符,则将其替换为指定字符 `c`。注意,可以使用 ASCII 编码判断一个字符是否为数字字符。当一个字符 `ch` 满足 `'0' <= ch <= '9'` 时,即是一个数字字符。
编写函数,对于给定的字符串,用指定字符替换该字符串中的数字字符。 函数接口定义: void replace_num ( char s[], char c ); 用指定字符 c 替换该字符串 s 中的数字字符。 裁判测试程序样例: #include <stdio.h> #include <string.h> void replace_num ( char s[], char c ); int main() { char str[81],ch; gets (str); ch=getchar(); replace_num(str,ch); puts(str); } /* 请在这里填写答案 */ 输入样例: abc0AB9 $ 输出样例: abc$AB$
答案如下:
```c
#include <stdio.h>
#include <string.h>
void replace_num(char s[], char c) {
int len = strlen(s);
for (int i = 0; i < len; i++) {
if (s[i] >= '0' && s[i] <= '9') {
s[i] = c;
}
}
}
int main() {
char str[81], ch;
fgets(str, sizeof(str), stdin);
scanf("%c", &ch);
replace_num(str, ch);
puts(str);
return 0;
}
```
注意:
1. 使用 `fgets` 代替 `gets`,避免因为输入超过数组长度而导致的缓冲区溢出。
2. 使用 `scanf` 代替 `getchar`,避免读取到多余的换行符。
3. 对于每个字符,判断是否是数字字符,如果是则替换为指定字符。
阅读全文