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