A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹雨 中级黑马   /  2014-6-22 17:57  /  1487 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹雨 于 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

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

9 个回复

倒序浏览
你这程序贴得太乱了,还贴漏了。
回复 使用道具 举报
for(i=0;i<maxlength;i++) b=*(s+i);
楼主这一句有问题吧,b是一个char数组的首地址,怎么能把一个数组的首地址重新复制为一个char *呢

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报


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




回复 使用道具 举报
完美世界 发表于 2014-6-22 20:09
你这程序贴得太乱了,还贴漏了。

是的呢,贴漏了个b已经改正了- -,但是改完后输出结果还是不对呢,结果是 :最长单词为aaaa aaaaaaaa,其长度为13。两个单词之间的空格为什么计入了呢?
回复 使用道具 举报
曹雨 发表于 2014-6-23 16:44
亲,十分感谢(*^__^*) 。修改完后,结果是 :最长单词为aaaa aaaaaaaa,其长度为13。两个单词之间的空格为 ...

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

{:3_48:}不会啊亲
回复 使用道具 举报
曹雨 中级黑马 2014-6-24 16:11:09
9#
huangqiwa 发表于 2014-6-23 21:10
检查一下判断单词结束的部分,是不是判断错误了,没有计入中间有一个空格的情况! ...

嗯,我已经知道了,谢谢哈{:3_54:}
回复 使用道具 举报
曹雨 发表于 2014-6-24 16:11
嗯,我已经知道了,谢谢哈

不客气,多多交流!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马