黑马程序员技术交流社区

标题: 字符串数组与指针的问题 [打印本页]

作者: 曹雨    时间: 2014-6-22 17:57
标题: 字符串数组与指针的问题
本帖最后由 曹雨 于 2014-6-24 16:11 编辑

今天下午写一个程序出错了,头大,求大神告知小白菜鸟,谢谢了(*^__^*) ~~o(>_<)o ~~
#include <stdio.h>
int main()
{
int i,length=0,maxlength=0;
char a[500]="sdfasdf fadsfas aa aaaaa aaaaaaaa aaa",b[50],*p,*s;
for(p=a;*p!='\0';p++)
{
  if((*p!=' ')&&(*p!='\0')) length++;
  else
  {
   if(maxlength < length)
   {
    maxlength=length;
    s=p-length;
    length=0;   
   }
  }
                 
}
for(i=0;i<maxlength;i++) b=*(s+i);
b[maxlength] = '\0';
printf("最长单词为%s,其长度为%d\n",b,maxlength);
return 0;
}

输出结果是:
最长单词为aaaa aaaaaaaa,其长度为13


作者: 完美世界    时间: 2014-6-22 20:09
你这程序贴得太乱了,还贴漏了。
作者: huangqiwa    时间: 2014-6-22 20:40
for(i=0;i<maxlength;i++) b=*(s+i);
楼主这一句有问题吧,b是一个char数组的首地址,怎么能把一个数组的首地址重新复制为一个char *呢
作者: 曹雨    时间: 2014-6-23 16:44
huangqiwa 发表于 2014-6-22 20:40
for(i=0;i


亲,十分感谢(*^__^*) 。修改完后,结果是 :最长单词为aaaa aaaaaaaa,其长度为13。两个单词之间的空格为什么计入了呢?





作者: 曹雨    时间: 2014-6-23 16:46
完美世界 发表于 2014-6-22 20:09
你这程序贴得太乱了,还贴漏了。

是的呢,贴漏了个b已经改正了- -,但是改完后输出结果还是不对呢,结果是 :最长单词为aaaa aaaaaaaa,其长度为13。两个单词之间的空格为什么计入了呢?

作者: huangqiwa    时间: 2014-6-23 21:10
曹雨 发表于 2014-6-23 16:44
亲,十分感谢(*^__^*) 。修改完后,结果是 :最长单词为aaaa aaaaaaaa,其长度为13。两个单词之间的空格为 ...

检查一下判断单词结束的部分,是不是判断错误了,没有计入中间有一个空格的情况!
作者: chain    时间: 2014-6-23 21:50
建议使用插入代码,比较清晰,你这代码一眼看上去就没有想看的冲动:lol
作者: 曹雨    时间: 2014-6-24 16:10
chain 发表于 2014-6-23 21:50
建议使用插入代码,比较清晰,你这代码一眼看上去就没有想看的冲动

{:3_48:}不会啊亲
作者: 曹雨    时间: 2014-6-24 16:11
huangqiwa 发表于 2014-6-23 21:10
检查一下判断单词结束的部分,是不是判断错误了,没有计入中间有一个空格的情况! ...

嗯,我已经知道了,谢谢哈{:3_54:}
作者: huangqiwa    时间: 2014-6-24 21:17
曹雨 发表于 2014-6-24 16:11
嗯,我已经知道了,谢谢哈

不客气,多多交流!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2