|
![]() | 作者: yuanrulai [yuanrulai]
![]() |
登录 |
/*编一个strcp()函数,它的作用和标准函数strcmp()一样*/ /*我用的是tc for windows ――-win-tc*/ #include"stdio.h" int strcp(char *stra,char *strb) { char cha,chb; int i,num=0; /*num为stra与strb之间的差值*/ for(i=0;(cha=stra[i])!='\0'||(chb=strb[i])!='\0';i++) /*当找到不同字符或者两个*/ if(cha!=chb){ /*字符串都到了末尾时结束循环*/ printf("chb is %d\n",chb);/*这句是我加上去检测用的,我不明白,*/ num=cha-chb; /*怎么每次chb都自动变成了ASCII值为8的字符了呢?,*/ break; /*找到不相同字符求出它们之间的差值退出循环*/ } return num; } void main() { char str1[20],str2[20]; gets(str1); gets(str2); printf("%d,%d\n",strcp(str1,str2),strcmp(str1,str2)); /*用来与标准函数对照的*/ getch();/*我用的是windows xp系统,加上这句是为了防止程序执行完毕后自动关毕*/ } [此贴被 排山倒海(yuanrulai) 在 05月13日19时20分 编辑过] [此贴被 286(unique) 在 05月14日09时05分 编辑过] |
地主 发表时间: 04-05-13 17:39 |
![]() | 回复: lida1818 [lida1818] ![]() |
登录 |
for(i=0;(cha=stra[i])!='\0'||(chb=strb[i])!='\0';i++) 这句, || 与 && 区别 用||后面的 chb=strb[i]得不到执行,被跳过了 |
B1层 发表时间: 04-05-13 19:17 |
![]() | 回复: yuanrulai [yuanrulai] ![]() |
登录 |
为什么会这样呢? 为什么会跳过呢? 而chb为什么就会是等于8呢? 如果不用||的话那就达不到我的目的了 希望能指教一下 |
B2层 发表时间: 04-05-13 19:23 |
![]() | 回复: yuanrulai [yuanrulai] ![]() |
登录 |
如果这里不用|| 而用&&的话那就会出现一些小问题 如输入 abcdefg abc 它会认为这两个字符串是相等的 |
B3层 发表时间: 04-05-13 19:27 |
![]() | 回复: lida1818 [lida1818] ![]() |
登录 |
你用||就没有问题了吗? ||是逻辑或,只要前一个条件为真,系统就不再计算下一个语句的逻辑值。所以chb=strb[i]就得不到执行.至于chb为什么会是8,这个与机器有关,不同的机器上,值是不同的。一句话,是个不确定的值。 #include"stdio.h" int strcp(char *stra,char *strb) { while(*stra!='\0'&&*strb!='\0')if(*stra!=*strb)return (int)*stra-(int)*strb; else stra++,strb++; if (*stra=='\0')return 0-(int)*strb; if (*strb=='\0')return (int)*stra; } void main() { char str1[20],str2[20]; gets(str1); gets(str2); printf("%d,%d\n",strcp(str1,str2),strcmp(str1,str2)); getch(); } 用for 也一样,加两个if 判断一下 |
B4层 发表时间: 04-05-13 20:31 |
![]() | 回复: yuanrulai [yuanrulai] ![]() |
登录 |
非常感谢! |
B5层 发表时间: 04-05-13 20:46 |
![]() | 回复: fool [cike] ![]() |
登录 |
刚学c,呵呵 终于算是看的懂一些了 谢谢烟雨平生 [此贴被 fool(cike) 在 05月15日22时01分 编辑过] |
B6层 发表时间: 04-05-15 22:00 |
![]() | 回复: yuanrulai [yuanrulai] ![]() |
登录 |
其实我这算法是对的 就算||有这个性质的话 也可以在|| 之外赋值 |
B7层 发表时间: 04-05-23 20:10 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号