下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。程序有二个错误,请先阅读程序,找出其中的错误行,并写出出错的原因,最后上机调试该程序验证自己的修改。

#1. #include <stdio.h>
#2. #include <conio.h>
#3. void fun(char *s)
#4. {
#5. int i, j;
#6. for (i=0, j=0; s[i]!='\0'; i++)
#7. if (s[i]>='0' && s[i]<='9')
#8. s[j] = s[i];
#9. s[j] = "\0";
#10. }
#11. main()
#12. {
#13. char item[80];
#14. printf("\nEntera string :");
#15. gets(item);
#16. printf("\n\nThestring is : %s\n", item);
#17. fun(item);
#18. printf("\n\nThestring of changing is : %s\n", item);
#19. }

出错行号 原因 正确代码

#8 s[j++] = s[i] //这里把原来的数字保存后,需要把j向后面移动一位;
#9 s[j] = '\0' //双引号内的是字符串,相当于2个字符,但是s[j]是char型的,应该用单引号
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-28
#8 循环变量j应该+1
#9 “'\0”改为'\0'
#include <stdio.h>
#include <conio.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("\nEntera string :");
gets(item);
printf("\n\nThestring is : %s\n", item);
fun(item);
printf("\n\nThestring of changing is : %s\n", item);
return 0;
}本回答被网友采纳
相似回答