寻找最长的单词

#include<stdio.h>
#include <string.h>
int main ()
{
    char str [100];
    while (gets(str) != NULL)
    {
        int max = 0;
        char c[20]={'\0'};//初始化字符数组 也即是需要存储的目标数组
        int  i;
        int n=0;
        for (i=0;i<strlen(str);i++)//将每一个字符都循环一遍 找出需要的字符
        {
            n++;//判断该单词的字符个数
            if (str[i]==',' || str[i]==' ' || str[i]=='.')//三个需要注意的点 也就是判断一个单词的关键
            {
                if (n>max)
                {
                    strncpy(c,str+i-n+1,n-1);
                    max=n;
                }
                n=0;//归零 重新开始 下次的循环
            }
        }
        printf ("%s\n",c);
    }
    return 0;
}

这题 是老师在pta上的一道题 感觉稍微有点难度,其中也有几个点感觉很重要

1 、对于多点测试  因为是测试数据多组 所以最先选择的是 while…EOF 而要求的是读入多个字符串 ,因此考虑 while(gets(str) != EOF)从而读入多个字符串 。

gets()函数是读入多个字符串 直到 \n 结束;

scanf  和 %c 是一个一个的输入字符

scanf 和 %s 是输入一个字符串 遇到\n或者' '空格结束输入

下面只需要处理读入的字符串即可 

最后一个重要的点就是 strncpy的函数了 我称之为截取函数 通俗讲可以截取原有的一个字符数组中的任意一段 此函数声明在 string.h 中 直接拿出来用便好

strncpy(dest, src, sizeof(dest));

dest是目标数组 需要存放的容器 

src是需要开始截取的数组的地址 +-一个数相当于地址的偏移 

而sizeof(dest)是防止超出dest的范围导致出错  表示从str这个地址开始将sizeof 个字符放进dest中 因此最后一个数可以小于dest的最大数组范围 但是不能大于

个人感觉这个函数用着挺方便的 要是大家想了解更多 可以专门查询一下

ps :第一次写这个博客 也就是突发奇想吧 希望大家可以指出我的不足之处 感谢大家了

金陵科技学院 软件工程 11/23  雨中纸鸢

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值