关于字符串指针的,照着网上抄写。用VC6.0运行后就停止工作,但是改成数组就没错

来源:360问答
责任编辑:鲁晓倩
字体:

为了帮助网友解决“关于字符串指针的,照着网上抄写。用VC6.0运行后就停止工作,但是改成数组就没错”相关的问题,布客网通过互联网对“关于字符串指针的,照着网上抄写。用VC6.0运行后就停止工作,但是改成数组就没错”相关的解决方案进行了整理,用户详细问题包括:

,具体解决方案如下:

解决方案1:

在程序开始声明的时候,定义了char *s1,这表明,s1是字符串,引用该字符串的时候,使用的是s1,而不是*s1,*s1是字符串首地址。

puts()函数的输入参数是字符串,所以应该使用:puts(s1);而不是puts(*s1);

这样修改后,再看看。


此外,以下两处也建议题主注意一下:

1、for循环中,s2[i]!=0;应为:s2[i]!='\0';

2、for循环后,封闭s1语句:s1[i]=0;应为:s1[i]='\0';

C语言可以进行类型强制转换,对于0,是整形,语句s1[i]=0执行前,存在类型不匹配问题,编译器严格来说会给出警告,有些编译器会忽略(或者用户对编译器的选项进行了设定,不显示该类警告),但是忽略了该警告,编译器还是会进行下去,将整形0强制转换成char型的ascii码为0的字符,这和'\0'正好相等,能够实现用户的逻辑。

但是基于代码可读性,或者培养良好编程习惯的角度来说,这种使用0代替'\0'的做法是不值得提倡的。

解决方案2:

你的char *s1是常量字串,不能用任何方式修改内容的,你的

s1[i]=s2[i];是不能执行的(内存不能写,程序报错)

网上程序90%以上都是错的,建议看正规的教材

关于C语言指针数组使用的小程序,在VC++6.0上编译...

答:教给你一个很重要的方法:单步调试! 可以看到每一步的结果,当然也很容易知道程序错在哪里!知道错在哪里了,当然也就很容易改正啦

对字符数组的初始化问题(C++ 运行环境为VC 6.0)

答:这些是基本的概念,你一定要弄懂: char a[12]; //定义了一个字符数组,数组名称为a,这个时候,a是一个指针,并且是常量类型,在整个数组生存期内其值都是不可改动的。 a = "null"; //这个时候,a是一个常量指针,指向数组的首地址,他的值在数...

www.book1234.com true report 13291
娱乐时尚
科技资讯
历史文化
真视界
旅游美食
精彩图文
我爱我车
母婴健康
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2018 book1234.com All Rights Reserved. 布客网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
教育考试: 学历财经建筑 医药公考资格外语电脑作文招聘中小学留学 文档 移民 文库专栏23问答中心z资讯z资讯1资讯涨资讯涨资讯1资讯问答图书馆知识IT编程数码信息解决方案信息中心IT科技问答新闻中心软件教室设计大全网络相关英语学习开发编程考试中心参考范文管理文库营销中心站长之家IT信息中心商学院数码大全硬件DIY企业服务网吧在线百科硬件知识手机平板汽车游戏家电精彩摄影现代家居IT女人经验健康养生猎奇创业攻略教育学习历史时尚潮流最近更新涨知识