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

字符串联想匹配里的有关问题

2012-04-28 
字符串联想匹配里的问题#includestdio.h #includestring.h voidmain(){char*str chengduchongqingbe

字符串联想匹配里的问题
#include   "stdio.h "
#include   "string.h "
void   main()
{
char     *str= "chengdu   chongqing   beijing ",*tem= "ch ";
char     *output,out[100];
output=out;
char     *s1,*t1;
int   i=0;

//*str= "chengdu   chongqing   beijing ";
//*tem= "ch ";
//out=output;
t1=tem;s1=str;
printf( "%s\n ",s1);
while(*str)
{
tem=t1;
while(*tem)
{
if(*str==*tem)
{
printf( "%s\n ",str);
//printf( "%s\n ",tem);
str++;tem++;
//printf( "%s\n ",str);
printf( "%s\n ",tem);
else   if(*str!=*tem)
{
break;
}
}
if(*tem==NULL)//tem的值是0--ASCII码对应的值
{
while   (*s1!= '   ')
{
*output=*s1;//在这里设置断点时检测到的数据对,赋予的值不对
          //貌似这里造成内存错误,问题貌似在这里问下这是哪里错了
printf( "%s ",*output);
s1++;i++;
//printf( "%s ",output[i])//和上面的输出语句都不对,有内存报错
}  
output[i]= '   ';
i++;
s1++;
str=s1;
}
else
while(*str!= '   '&&*str!=NULL)
{
str++;
}

}

printf( "%s ",output);

}
这是华为编程大赛的一道题,是联想匹配的,比如原字符串有 "chengdu   beijing   cong "     输入一个匹配字符串 "ch "
输出chengdu,关键是*output=*s1;这个语句怎么不对,换成output[100]数组后都进行断定调试赋的值都不对。大家帮帮忙呀!谢谢了!

[解决办法]
第一,可以用: strstr
第二,字符串赋值用 strcpy
[解决办法]
输出一个字符,要用"%c",而不是"%s":

你的程序中,

C/C++ code
printf( "%s ",*output); //这是错误的,*output是一个字符,而%s是输出字符串的,它要看到"\0"才停止输出,如果看不到"\0",它就一直输出内存里的东西。 

热点排行