[i=s] 本帖最后由 Ti.定下契约 于 2015-7-28 12:21 编辑 #include <stdio.h> #include <string.h> #define NUM 81 char input(char *array,char ch,int num); int main(void) { char arr_ch[NUM],ch,*p; gets(arr_ch); ch=getchar(); p=input(arr_ch,ch,strlen(arr_ch)); printf("%p\n",p); return 0; } char input(char *array,char ch,int num) { char chs[NUM],*p; int i,j,n,x; puts("************"); fflush(stdin); gets(chs); printf("%s\n",chs); for(i=0;i<NUM;i++) { printf("%d,%c,%c\n",i,array[0],chs); if(array[0]==chs) for(j=i,n=0;n<num;j++,n++) { printf("%d,%c,%c\n",j,array[n],chs[j]); if(chs[j]!=array[n]) break; if(n==num-1) for(x=i,n=0;n<num;x++,n++) { printf("%c,%c\n",ch,chs[x]);→ → → 好像是到这里程序就停止了 if(chs[x]==ch) { p=chs[x]; printf("%c\n",*p); return p; break; } else return '\0'; } } } } 结果 array r ************ the array the array 0,a,t 1,a,h 2,a,e 3,a, 4,a,a 4,a,a 5,r,r 6,r,r 7,a,a 8,y,y r,a 后面就没了@@6!!@@6!!@@6!!
你这程序目测就有一堆奇怪的地方, 比如: (1)“printf("%d,%c,%c\n",i,array[0],chs);”,用%c(char字符)去打印chs这个地址值,main函数里的%p控制符我也没看懂是要干啥 (2)“if(array[0]==chs)”,拿char数组元素(1字节)跟地址值(4字节)做比较 (3)“if(n==num-1)”,用strlen计算出来的数组长度本身就不包含最后的NULL,这里传参过来的num减1是几个意思? (4)“printf("%c\n",*p); return p;”,明明p是指针变量,函数返回值是char型(1字节),return 却返回指针变量p的值(4字节) 麻烦你说下你的程序要实现的大致功能,你贴出来的代码实在是错误百出。。。。。。