首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-14 
请教一个C语言字符串问题??#includestdio.h voidshow(char*str)voidmain(){show( dark )}voidshow(c

请教一个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 ");

热点排行