c语言如何使一行字符串,按空格分开形成多个字符串,然后再记录每个已分开字符串,比出长度最长的输出

c语言如何使一行字符串,按空格分开形成多个字符串,然后再记录每个已分开字符串,比出长度最长的输出。

题目描述是这样的
题目描述:输入一段字符(只含有空格和字母,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。

输入
输入一段文字

输出
输入一段字符,以stop作为最后输入的字符串。

样例输入
My name is Amy
My name is Jane
stop

样例输出
11 name
12 name

提示
字符串长度不超过100。

#include<stdio.h>
#include<string.h>
int main()
{
char MaxString[100];
char sname[100][100];
int i,j;
for(i=0;i<100;i++)
{
gets(sname[i])
if(strcmp(sname[i],'stop')==0)
{

}
else
break;
}

我目前写到这不知道然后怎么办。

#include <stdio.h>
#include <string.h>

#define MAX 32

int find_longest(char *buff)
{
    int total_len = 0, str_len = 0, longest_len = -1;
    char longest[128] = {0};
    char *p = buff;
    
    while(1)
    {
        if (' ' == *p || '\0' == *p)
        {
            if (str_len > longest_len)
            {
                strncpy(longest, p-str_len, str_len);
                longest_len = str_len;
            }
            
            total_len += str_len;
            str_len = 0;
            if ('\0' == *p)
            {
                break;
            }
        }
        else
        {
            str_len++;
        }
        p++;
    }
    
    strcpy(buff, longest);
    
    return total_len;
}

int main(int argc, char *argv[])
{
    int i = 0, cnt = 0, total_len = 0;
    char buff[MAX][128] = {{0}};
    
    for (i = 0; i < MAX; i++)
    {
        if (NULL == fgets(buff[i], 128, stdin))
        { 
            printf("错误\n");
            return -1;
        }
        else
        {
            buff[i][strlen(buff[i])-1] = '\0';
            if (0 == strcmp("stop", buff[i]))
            {
                cnt = i;
                break;
            }
        }
    }
    
    for (i = 0; i < cnt; i++)
    {
        total_len = find_longest(buff[i]);
        printf("%d %s\n", total_len, buff[i]);
    }
    
    return 0;
}

追问

大佬,在我云端的编译器上他是直接输出  错误

devc++是对的,vs2017就报错了

是有什么问题吗0.0

追答

没什么问题 strncpy_s不是标准库里的东西,是微软搞出来的一个第三方库,所以你用微软的vs2017就报错了。
你也可以用strncpy_s代替strncpy,不过在其他编译器下可能也编不过了,你可以网上搜一下报信息看下解决方法。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-22
这个题是,一到测试题,条件太多了,答案比较笼统,但是对了

#include<stdio.h>
#include<string.h>
int main(void)
{
char str[100];
int i,j,k=0,len,max=0,chars=0;
while(1)
{
gets(str);
if(strstr(str,"stop")!=0)
break;
k=0;max=0;chars=0;j=0;
len=strlen(str);
for(i=0,j=0;i<=len;i++)
{
if(str[i]==' '||str[i]=='\0')
{
j++;
if(max<chars)
{
max=chars;
k=i-chars;
}
chars=0;
}
else
chars++;
}
printf("%d ",len-j+1);
for(i=k;i<k+max;i++)
printf("%c",str[i]);
printf("\n");
}
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网