问答题 下列给定程序中,函数proc()的功能是:删除字符串str中所有空白字符(包括Tab字符、Enter符及换行符)。输入字符串时以“#”结束输入。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动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]=c; i++; c=getchar(); }
str[i]="/0";
proc(str);
puts(str);
}
【正确答案】
【答案解析】错误:c[t]="/0";
正确:c[t]="/0"; [解析] 删除空格后的字符串放在数组c中,完成字符的复制后,要为新的字符串c添加结束符。因此,“c[t]="/0";”应改为“c[t]="/0";”。