| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4684 人关注过本帖
标题:关于输出字符串中最长单词的问题
只看楼主 加入收藏
神月泽夜
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2016-11-29
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:16 
关于输出字符串中最长单词的问题
#include<stdio.h>
#include<string.h>
char longestword(char x[]);
int main()
{
    char a[80];
    printf("请输入一行字符:\n");
    gets(a);
    printf("%s",longestword(a));
    return 0;
}
char longestword(char x[])
{
    int i, n, wlen, lwlen;//wlen保存单词的长度,lwlen保存扫描到最长单词的长度。
    char w[80], lw[500];//w保存扫描到的单词,lw保存扫描到最长的单词。
    n = strlen(x);
    lwlen = wlen = 0;
    for (i = 0;i < n;i++)
    {
        if ((x[i] >= 'A'&&x[i] <= 'Z') || (x[i] >= 'a'&&x[i] <= 'z'))
        {
            w[wlen] = x[i];
            wlen++;
            continue;
        }
        else
        {
            if (wlen > lwlen)
            {
                strcpy_s(lw, 30, w);
                lwlen = wlen;
                wlen = 0;
            }
            else
                continue;
        }
    }
    return(lw);
}
搜索更多相关主题的帖子: include return 字符串 单词 
2016-12-21 19:46
神月泽夜
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2016-11-29
收藏
得分:0 
求大神帮忙看看怎么改,运行不了额
2016-12-21 19:47
搬砖
Rank: 2
等 级:论坛游民
帖 子:68
专家分:37
注 册:2016-10-13
收藏
得分:0 
回复 楼主 神月泽夜
strcpy_s(lw, 30, w),这句怎么理解?
2016-12-21 20:59
神月泽夜
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2016-11-29
收藏
得分:0 
回复 3楼 搬砖
这个是vs里的,strcpy不让用。。。,中间是缓冲
2016-12-21 21:16
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
wlen=0的位置有问题~如果不是字母wlen的值不一定会清零,点到即止~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-21 21:36
busboy
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2016-12-20
收藏
得分:0 
回复 4楼 神月泽夜
碰到空格符应该截断呀,为什么没有截断呢
2016-12-21 21:45
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
char longestword(char x[]); 声明的函数返回值是一个char型字符, return(lw);返回了一个char型地址。
写成void longestword(char x[]); 然后在函数中就把字符串输出,不知道可不可以。。

Code is my life.
2016-12-21 21:56
busboy
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2016-12-20
收藏
得分:0 
回复 7楼 bjut_Allen
不行,输出会出错
2016-12-21 22:05
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 8楼 busboy
你发个代码看看

Code is my life.
2016-12-21 22:07
busboy
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2016-12-20
收藏
得分:0 
回复 9楼 bjut_Allen
#include <stdio.h>
#include <string.h>
void longestword(char x[]);

int main()
{
    char a[80];
    printf("请输入一行字符:\n");
    gets(a);
    longestword(a);
    return 0;
}

void longestword(char x[])
{
    int i, n, wlen, lwlen;//wlen保存单词的长度,lwlen保存扫描到最长单词的长度。
    char w[80], lw[500];//w保存扫描到的单词,lw保存扫描到最长的单词。
   
    n = strlen(x);
    lwlen = wlen = 0;
    for (i = 0;i < n;i++)
    {
        if ((x[i] >= 'A'&&x[i] <= 'Z') || (x[i] >= 'a'&&x[i] <= 'z'))
        {
            w[wlen] = x[i];
            wlen++;
            continue;
        }
        else
        {
            if (wlen > lwlen)
            {
                strcpy(lw,w);
                lwlen = wlen;
                wlen = 0;
            }
            else
            {
                continue;
            }
        }
    }

    printf("%s\n",lw);
}
图片附件: 游客没有浏览图片的权限,请 登录注册


有几个单词都在里面,这个是怎么回事?

[此贴子已经被作者于2016-12-21 22:13编辑过]

2016-12-21 22:10
快速回复:关于输出字符串中最长单词的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020656 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved