#include<stdio.h> #include<string.h> int fun(char *s) { char *s1=s; for(;s1<s+strlen(s);s1++) if(*s>='0'&&*s<='9') strcpy(str,str+1); } int main() { char ch[100]; int i; gets(ch); puts(ch); return 0; }
时间: 2023-12-05 07:04:12 浏览: 388
这段代码存在一些问题:
1. 函数 `fun` 中定义了一个指针 `s1` 并赋值为 `s`,但在循环内并没有使用该指针进行操作,应该改为 `if (*s1 >= '0' && *s1 <= '9') strcpy(s1, s1+1);`
2. 函数 `fun` 中使用了一个未定义的变量 `str`,应该先定义再使用。
3. 函数 `fun` 没有返回值,应该改为 `void fun(char *s)`。
4. 函数 `main` 中使用了一个未定义的变量 `i`,应该先定义再使用。
5. 函数 `gets` 不安全,容易导致缓冲区溢出,建议使用更安全的函数 `fgets`。
6. 函数 `puts` 输出的是字符串,应该加上双引号。
修改后的代码如下:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s) {
char *s1 = s;
for (; s1 < s + strlen(s); s1++) {
if (*s1 >= '0' && *s1 <= '9') {
strcpy(s1, s1+1);
s1--; // 因为删除了一个字符,指针需要回退一位
}
}
}
int main() {
char ch[100];
fgets(ch, 100, stdin);
puts(ch);
fun(ch);
printf("%s\n", ch);
return 0;
}
```
阅读全文