读书人

请问一个C语言字符串有关问题?

发布时间: 2012-04-14 17:14:21 作者: rapoo

请教一个C语言字符串问题??
#include "stdio.h "
void show(char *str);
void main()
{
show( "dark ");
}
void show(char *str)
{
if(str== "dark ")
printf( "English\n ");
else
printf( "French\n ");
}

用Turbo C2.0 和Turbo C++3.0编译器输出是: French
用VS2003编译器输出是: English

请教是什么原因??
我的本意是在Turbo C++3.0上输出 English,如何做??

[解决办法]
#include "stdio.h "
void show(char *str);
void main()
{
show( "dark ");
}
void show(char *str)
{
if(0 == strcmp(str, "dark "))
printf( "English\n ");
else
printf( "French\n ");
}

[解决办法]
str== "dark "这只是比较地址
用 strcmp(str, "dark ");比较两个字符串
[解决办法]
vs之所以能输出english,大概因为编译器进行了一些优化,使得内容相同的字符串常量如 "dark "只进行了一次分配,所以str与 "dark "是同一指针.而turbo c则对 "dark "分配了两次。

c里边,==无法比较两个字符串内容是否相等,应该用strcmp这样的比较函数
[解决办法]
比较字符串要用strcmp(str, "dark ");

读书人网 >C语言

热点推荐