免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1377 | 回复: 11
打印 上一主题 下一主题

程序编的有什么问题吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-27 14:18 |只看该作者 |倒序浏览
下列叙述正确的是(    )
char x[]={"abcdefg"};
char y[]={'a','b','c','d','e','f','g'};
a, x[]长度>;y[]长度
b, x[]长度<y[]长度
c, x[]与y[]等值

# include "string.h"
main()
{int a,b,z;
char x[]={"abcdefg"};
char y[]={'a','b','c','d','e','f','g'};
z=(strcmp(x,y));
if(z>;0)printf("x>;y \n";
else if(z<0)printf("x<y \n";
else printf("x=y \n";
a=strlen(x);
b=strlen(y);
printf("%d \n%d \n",a,b);
printf("%s\n",x);
printf("%s\n",y);}

论坛徽章:
0
2 [报告]
发表于 2005-06-27 14:49 |只看该作者

程序编的有什么问题吗

字符串处理函数:
strcmp()、strlen()等都是针对字符串的,x[]是字符串数组;而y是字符数组,它所存储的是一系列字符,而不是字符串。

论坛徽章:
0
3 [报告]
发表于 2005-06-27 15:11 |只看该作者

程序编的有什么问题吗

你看看这个代码,跟你刚刚那个有什么不同,现在这样x才等价于y的赋值,因为字符串结尾会有一个'\0'
  1. # include "string.h"
  2. main()
  3. {int a,b,z;
  4.         char x[]={"abcdefg"};
  5.         char y[]={'a','b','c','d','e','f','g','\0'};
  6.         z=(strcmp(x,y));
  7.         if(z>;0)printf("x>;y \n");
  8.         else if(z<0)printf("x<y \n");
  9.         else printf("x=y \n");
  10.         a=strlen(x);
  11.         b=strlen(y);
  12.         printf("%d \n%d \n",a,b);
  13.         printf("%s\n",x);
  14.         printf("%s\n",y);}
复制代码

论坛徽章:
0
4 [报告]
发表于 2005-06-27 16:14 |只看该作者

程序编的有什么问题吗

汗,不是比长度吗?用strcmp干啥呀?
选a呀,很明显的事情啊

论坛徽章:
0
5 [报告]
发表于 2005-06-27 17:22 |只看该作者

程序编的有什么问题吗

原帖由 "cellar" 发表:
汗,不是比长度吗?用strcmp干啥呀?
选a呀,很明显的事情啊


怎么会是a呢,怎么说y的长度也不会比x短啊。。

论坛徽章:
0
6 [报告]
发表于 2005-06-27 17:26 |只看该作者

程序编的有什么问题吗

原帖由 "ccf" 发表:


怎么会是a呢,怎么说y的长度也不会比x短啊。。

这是C语言的字符串定义规定了的。

论坛徽章:
0
7 [报告]
发表于 2005-06-27 18:29 |只看该作者

程序编的有什么问题吗

建议先man strcmp



  1. #include <stdio.h>;
  2. #include <string.h>;
  3. int main(void)
  4. {
  5.         char x[]={"abcdefg"};
  6.         //char y[]={'a','b','c','d','e','f','g'};
  7.         char y[]={'a','b','c','d','e','f','g','\0'};
  8.         int val;
  9.         val = strcmp(x,y);
  10.         printf("val=%d\n",val);
  11.         printf("xlenth=%d\n",strlen(x));
  12.         printf("ylenth=%d\n",strlen(y));
  13.         printf("xsize=%d\n",sizeof(x));
  14.         printf("ysize=%d\n",sizeof(y));
  15.         printf("x:%s\n",x);
  16.         printf("y:%s\n",y);
  17.         return 0;
  18. }
复制代码

不作初始化,随机性很大的,你可以试试str[]="abc","abcd".[/code]

论坛徽章:
0
8 [报告]
发表于 2005-06-27 23:31 |只看该作者

程序编的有什么问题吗

a形式字符串后自动添加'\0'
b形式数组形式,不会有'\0'

论坛徽章:
0
9 [报告]
发表于 2005-06-28 09:00 |只看该作者

程序编的有什么问题吗

原帖由 "kj501" 发表:

这是C语言的字符串定义规定了的。


不是很明白你的意思,我的理解是x为"abcdefg",以\0结尾,所以长度一定为7,y值为"abcdefg",但没有定义以\0结尾,如果运气好,后面刚好跟一个'\0'的话,他的长度也为7,如果后面不是'\0',的话,他的长度就会大于7,也就是说y的长度应该是等于或大于7

论坛徽章:
0
10 [报告]
发表于 2005-06-28 09:58 |只看该作者

程序编的有什么问题吗

首先要弄清楚x[]长度到底是什么意思,strlen(x)==x[]长度吗?strlen是一种程序实现,并非是真正的x[]长度!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP