include <stdio.h> char lon(const char a[], const char b) { int i,t; char p[50]; t = 0; for (i = 0; i < 50; i++) { if (a[i] == b) continue; else { p[t] = a[i]; t++; } } return p; } int main() { int i; char a[50]; char j; char b; printf("Input a string:"); gets(a); printf("Input a char:"); scanf("%c", &b); j = lon(a[i], b); printf("After deleted,the string is:%c", j); return 0; }
时间: 2024-01-14 15:03:02 浏览: 56
# include <stdio.h>
这段代码存在很多问题,比如函数返回值类型声明与实际返回值类型不符,函数 lon() 的返回值应该是一个字符串,而不是一个字符。在函数中,变量 p 的大小为 50,但实际上字符串的长度是不确定的,可能会超出数组的范围,导致数组越界错误。此外,函数中有一个 continue 语句,会导致不符合要求的字符跳过,但是没有对字符串进行重新赋值,最终返回的字符串中可能会包含这些字符。在主函数中,调用了 lon() 函数,但是没有给出实际的参数,代码也没有将函数返回的字符串打印出来。
如果需要删除字符串中的某个字符,可以使用类似如下的代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[50];
char ch;
printf("Input a string:");
fgets(str, 50, stdin);
printf("Input a char:");
scanf("%c", &ch);
char *p = str;
while (*p) {
if (*p != ch) {
printf("%c", *p);
}
p++;
}
return 0;
}
```
该代码中使用了 fgets() 函数来读取用户输入的字符串,避免了 gets() 函数可能引发的安全问题。使用指针遍历字符串,将不等于要删除的字符的字符打印出来,从而实现了删除字符的功能。
阅读全文