以下程序中函数fun()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。例如:输入ewjfio23450ejgvb0erio3mg0wgjn 23,则输出2345003023。请改正程序中的错误,使程序能得到正确的结果。包含错误的源程序如下: #include <stdio.h> void fun (char *s) ; { int i,j; for (i=0,j=0;s[i]!='\0';i++) { if (s[i]>=0 && s[i]<=9) s[j]=s[i]; } s[j]=”\0”; } main() { char item[80]; printf("\nEnter a string:"); gets(item); printf("\n\nThe string is :%s\n",item); fun (item); printf("\n\nThe string of changing is :%s\n",item); }
时间: 2023-11-22 16:54:31 浏览: 207
修改后的程序如下:
```c
#include <stdio.h>
void fun(char *s)
{
int i,j;
char temp[80]; // 新字符串
j = 0;
for (i = 0; s[i] != '\0'; i++)
{
if (s[i] >= '0' && s[i] <= '9') // 判断是否为数字字符
{
temp[j] = s[i]; // 将数字字符存入新字符串
j++;
}
}
temp[j] = '\0'; // 新字符串结束符
strcpy(s, temp); // 将新字符串复制到原字符串
}
int main()
{
char item[80];
printf("Enter a string: ");
gets(item);
printf("\nThe original string is: %s\n", item);
fun(item);
printf("\nThe new string is: %s\n", item);
return 0;
}
```
修改说明:
1. 函数fun()中,新建了一个字符数组temp,用于存放提取出来的数字字符;
2. 在循环中,判断s[i]是否为数字字符时,应该使用单引号括起来的字符'0'~'9',而不是数字0~9;
3. 将提取出来的数字字符存入temp中,并将j加1;
4. 在temp最后加上结束符'\0';
5. 使用strcpy()函数将temp复制到原字符串s中。
阅读全文