程序改错#include<stdio.h> #include<string.h> void fun(char a[]); int main() {char a[80]; gets(a); fun(a); puts(a); } void fun(char a[]) int i=0,j; while(a[i]!='*')i++; while(a[i]=='\0') a[j++]=a[i++]; a[j]='\0'; }
时间: 2024-03-02 11:49:15 浏览: 60
程序中有几处错误,我来一一指出并进行修正。
1. 在函数 `void fun(char a[])` 的定义处,缺少左大括号,应该改为:
```c
void fun(char a[]) {
```
2. 在 `fun` 函数中,`j` 变量没有初始化,应该将其初始化为 0。
3. 在 `while` 循环的判断条件中,应该是判断 `a[i]` 是否等于字符串结束标志 `\0`,而不是判断是否等于 `*`。
4. 在 `while` 循环中,应该先将 `a[j]` 赋值为 `a[i]`,再将 `i` 和 `j` 都加 1。
5. 在最后将字符串结束标志加上时,应该是将 `a[j]` 赋值为 `\0`,而不是将 `a[i]` 赋值为 `\0`。
修正后的程序如下所示:
```c
#include <stdio.h>
#include <string.h>
void fun(char a[]);
int main() {
char a[80];
gets(a);
fun(a);
puts(a);
return 0;
}
void fun(char a[]) {
int i = 0, j = 0;
while (a[i] != '\0') i++;
i--;
while (a[i] == '*') i--;
while (i >= 0) {
a[j] = a[i];
i--;
j++;
}
a[j] = '\0';
}
```
注意:在实际开发中,`gets` 函数已经被标记为不安全的函数,建议使用 `fgets` 函数代替。另外,在将字符串倒序输出时,可以使用两个指针分别指向字符串头和尾,不需要使用循环。
阅读全文