Ti.定下契约
程序停止工作

本帖最后由 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!!

张全蛋
展开Biu

你这程序目测就有一堆奇怪的地方,

比如:

(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字节)

麻烦你说下你的程序要实现的大致功能,你贴出来的代码实在是错误百出。。。。。。

[查看全文]