#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 雨中纸鸢