調試了壹下,問題在於字符串輸入後沒有清stdin流殘余數據,故變量ch沒有獲得正確值。
修改代碼和註釋如下:
#include?<stdio.h>#include?<stdlib.h>
int?Strchr(char?s[],char?ch);
int?main()
{
char?ch;? int?y; char?s[1000]; printf("Please?input?a?string:"); scanf("%s",&s); getchar();?//清除stdin流的殘留數據 printf("Search:"); scanf("%c",&ch);? getchar();//清除stdin流的殘留數據 y=Strchr(s,ch);? printf("the?first?position?is:%d\n",y); system("PAUSE"); return?0;}
int?Strchr(char?s[],char?ch)
{
int?i; //for(i=0;i<=1000;i++)數組下標0~999 for(i=0;i<1000;i++) { if(s[i]==ch)//比較用== {return?i+1;?//換算為正常順序位置
} //else?if(s[i]!=ch)?邏輯有誤 //{ //?return?-1; //} } return?-1;}
在VC6調試通過,如下圖:
供參考。