改错题
1. 下列给定程序中,函数proc()的功能是:删除字符串str中的所有空白字符(包括Tab字符、回车符及换行符)。输入字符串时以“#”结束输入。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序: #include <string.h>
#include <stdio.h>
#include <ctype.h>
void proc (char *p)
{
int i,t;char c[80];
for(i=0,t=0;p[i];i++)
if(!isspace(*(p+i)))c[t++]=p[i];
//****found****
c[t]="<0";
strcpy(p,c);
}
void main()
{
char c,str[80];
int i=0;
printf("Input a string:");
c=getchar();
while(c!='#')
{
str[i]=e;i++;c=getchar();}
str[i]='<0';
proc(str);
puts(str);
}
【正确答案】错误:c[t]="<0";
正确:c[t]='<0';
【答案解析】 删除空格后的字符串放在数组c中,完成字符的复制后,要为新的字符串c添加结束符。因此,“c[t]="<0";”应改为“c[t]='<0';”。