检查并改正c语言程序代码: 本题要求实现一个删除字符串中的指定字符的简单函数。 函数接口定义: 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.void delchar( char *str, char c ) { char b[MAXN]; int i,j=0; int n=strlen(str); for(i=0; str[i]!='\0'; i++) { if(str[i]!='c') b[i]=str[i]; } for(j=0; j<n; j++) { str[j]=b[j]; } }
时间: 2024-03-04 22:49:25 浏览: 30
在函数`delchar`中,存在以下问题:
1. `b`数组没有初始化,导致在第二个循环中无法正确处理字符串。
2. 在第一个循环中,判断条件应该是`if(str[i]!=c)`,而不是`if(str[i]!='c')`,因为`c`是待删除的字符,需要使用函数参数中的变量。
3. 在第一个循环中,没有将删除后的字符串赋值回到原来的字符串`str`中。应该使用`strcpy`函数将`b`数组中的内容复制回到`str`中。
下面是修改后的代码:
```c
void delchar(char *str, char c) {
char b[MAXN] = {0};
int i, j = 0;
int n = strlen(str);
for (i = 0; str[i] != '\0'; i++) {
if (str[i] != c) {
b[j++] = str[i];
}
}
b[j] = '\0';
strcpy(str, b);
}
```
相关问题
用C语言编写一函数删除字符串中指定的字符,函数的原型为: void strdelch( char *str, char c ),并制作流程
好的,下面是实现函数的代码和流程图。
```c
#include <stdio.h>
#include <string.h>
void strdelch(char *str, char c) {
int i, j;
for (i = j = 0; str[i] != '\0'; i++) {
if (str[i] != c) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100];
char c;
printf("请输入一个字符串:");
scanf("%s", str);
getchar(); // 读取多余的回车符
printf("请输入要删除的字符:");
scanf("%c", &c);
strdelch(str, c);
printf("删除指定字符后的字符串为:%s\n", str);
return 0;
}
```
流程图如下:
![strdelch函数流程图](https://i.imgur.com/3rS6Q0u.png)
希望对您有所帮助!
用c语言编写一个程序,将一个指定字符插入到主字符串中指定位置。
下面是用C语言编写的将一个指定字符插入到主字符串中指定位置的程序:
```c
#include <stdio.h>
#include <string.h>
void insert(char *str, char ch, int pos) {
int len = strlen(str);
if (pos > len) {
printf("Error: invalid position!\n");
return;
}
memmove(str + pos + 1, str + pos, len - pos + 1);
str[pos] = ch;
}
int main() {
char str[100], ch;
int pos;
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
printf("Enter a character to insert: ");
ch = getchar();
printf("Enter the position to insert: ");
scanf("%d", &pos);
insert(str, ch, pos);
printf("Result: %s", str);
return 0;
}
```
程序中使用了字符串库函数 `strlen()` 和 `memmove()`,需要在程序开始处包含头文件 `string.h`。函数 `insert()` 接受三个参数:主字符串指针 `str`、要插入的字符 `ch` 和插入位置 `pos`。如果插入位置超过了主字符串的长度,函数会输出错误信息并返回。否则,函数使用 `memmove()` 函数将插入位置后面的字符向后移动一位,然后将要插入的字符放到插入位置上。
在 `main()` 函数中,程序首先读入一个字符串,然后读入要插入的字符和插入位置。接着调用 `insert()` 函数将字符插入到字符串中,并输出结果。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)