
本帖最后由 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字节)
麻烦你说下你的程序要实现的大致功能,你贴出来的代码实在是错误百出。。。。。。
[查看全文]