挑战30天C 入门极限:c_c 中字符串常量的不相等性,以及字符串的copy

文章作者 100test 发表时间 2007:03:10 17:14:21
来源 100Test.Com百考试题网


//程序作者:管宁
//站点:www.cndev-lab.com

//所有稿件均有版权,如要转载,请务必著名出处和作者

#include <iostream>
using namespace std.
void main(void)
{
if("test"=="test")
{
cout<<"相等".
}
else
{
cout<<"不相等".
}
}



上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c 却不是这样。

为什么呢?

答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较!


//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者

#include <iostream>
#include <string>
using namespace std.
void main(void)
{
if(strcmp("test","test")==0)
{
cout<<"相等".
}
else
{
cout<<"不相等".
}
cin.get().
}


strcmp()的函数原形是,int strcmp(const char* str1,const char* str)

相当将会返回一个等于0的整数,不相等的时候将会返回一个非0整数!


//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者

#include <iostream>
#include <string>
using namespace std.
void main(void)
{
char test[]="test str!".
char str[15].
strcpy(str,test).
cout<
int a[]={1,2,3,4,5}.
int b[5].
memcpy(b,a,sizeof(a)*sizeof(int)).
for(int i=0.i<5.i )
{
cout<}
cin.get().
}


上面的代码中的strcpy用来处理字符串数学组的copy,由于字符串数组属于const char*也就是常量指针所以是不能用a="test str!".的方式赋值的,接在后面的memcpy用于处理非\0结尾的数组的copy处理,memcpy第三个参数是设置b在内存中所需要的内存空间大小所以用sizeof(a)*sizeof(int)来处理!

相关文章


挑战30天C 入门极限:C_C 中利用空指针(NULL),提高程序运行效率
二级C语言考试辅导教程第十章:文件[1]
二级C语言考试辅导教程第九章:预处理[4]
挑战30天C 入门极限:c_c 中字符串常量的不相等性,以及字符串的copy
挑战30天C 入门极限:c_c 中的字符指针数组,指向指针的指针的含义
二级C语言考试辅导教程第九章:预处理[3]
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛