(改错题): 【要求】 1. 打开 T 盘中的文件 myf1.c ,按以下程序功能改正文件中程序的错误。 2. 可以修改语句中的一部分内容,调整语句次序,增加变量声明或预处理命令,但不能增加其他语句,也不能删去整条语句。 3. 修改后的源程序仍保存在 T 盘 myf1.c 中,请勿改变 myf1.c 的文件名。 【程序功能】 函数 saveword 的功能是:在 s 指向的由若干个英文单词组成的字符串中搜索包含 t 指向字符串的单词,将找到的所有包含 t 字符串的单词复制到 ch 指向的二维数组中,函数返回找到的单词个数。 称 s 字符串为 “ 被搜索字符串 ” , t 字符串为 “ 搜索字符串 ” 。 函数 searchsub 的功能是判断 s 指向的字符串中是否包含 t 指向的字符串,若包含则函数返回 1 ,否则函数返回 0 。 【测试数据与运行结果】 被搜索字符串 : "Life is an onion and one cries while peeling it." 搜索字符串: "on" 输出: ch[0]: onion ch[1]: one k=2 【含有错误的源程序】 #include #include #include #include int searchsub(char s[],char t[]) { int i,j,k; for(i=0;s[i]!='\0';i++) { j=0,k=i; while(t[j]!='\0'&&t[j]==s[k]&&s[k]) { j++; k++; } if(t[j]!='\0') return 1; } return 0; } int saveword(char s[],char t[],char ch[][20]) { int i=0,j,k=0; char str[20]; while(s[i]) { while(!isalpha(s[i])) if(s[i]!='\0')i++; else break; for(j=0;isalpha(s[i]);j++;i++) str[j]=s[i]; str[j]='\0'; if(searchsub(str,t)) strcpy(str,ch[k++]); } return k; } int main() { char s[80]="Life is an onion and one cries while peeling it."; char t[20]="on",ch[40][20]; int i,k; k=saveword(s,t); for(i=0;i printf("ch[%d]:%s\n",i,ch[i]); printf("k=%d\n",k); getch(); return 0; }