改错题 1.  下列给定程序中,函数proc()的功能是:统计字符串sub在字符串str中出现的次数。
    例如,若字符串为best wishesto you,子字符串为st,则应输出2。
    请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdio.h>
    proc(char*str,char*sub)
    {
    int i,j,k,num=0;
    //****found****
    for(i=0,str[i],i++)
    for(j=i,k=0; sub[k]==str[j]; k++,j++)
    if(sub[k+1]=='\0')
    {  num++;
    break;
    }
    return num;
    }
    void main()
    {
    char str[80],sub[80];
    printf("Input a string:");
    gets(str);   
    printf("Input a sbustring:");
    gets(sub);
    printf("%d\n",proc(str,sub));
    }
【正确答案】错误:for(i=0,str[i],i++)
   正确:for(i=0; str[i]; i++)
【答案解析】 根据C语言的语法规则,for循环的条件语句之间是用分号间隔的,而不是用逗号。因此,“for(i=0,str[i],i++)”应改为“for(i=0; str[i]; i++)”。