本帖最后由 haiouda 于 2015-3-28 18:12 编辑 /****************************************************************************************************
有一个字符串,包含 n 个字符。写一个函数,将此字符串中从第 m 个字符开始的全部字符复制成为另一个字符串;
*****************************************************************************************************/
#if(1)
#include<stdio.h>
#include<string.h>
int main()
{
char *xd(char *p,char *u,int k);
char a[100],b[100],*t;
int m;
printf("输入一个字符串:");
gets(a);
printf("输入一个整数:m=");
scanf("%d",&m);
while (strlen(a)<m)
{
printf("输入错误!请重新输入:m=");
scanf("%d",&m);
}
t=xd(a,b,m);
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",t);
return 0;
}
char *xd(char *p,char *u,int k)
{
int i=0;
while(*(p+k)!=0)
{
*u=*(p+k);
p++;u++;i++;
}
*u=0;
return (u-i);
}
#endif
第21行,改为: while (strlen(a)-m<0) ,程序变会出错,为何?(这个和下面的循环条件,在数学上明明是相等的)
把21行,改为: while ( m-strlen(a) >0) ,程序进入死循环?如果理解为,由于输入的m使循环条件一直成立,所以死循环,那么上面的怎么解释?
如果象上面,21行那样子,又会有警告,又是为什么?
以上我的输入字符串为:I love you!
|