寻找最长的单词,strncpy的问题

寻找最长的单词

#include
#include

void find(char a[], char word[])
{
    int i = 0, j = 0;
    int length = 0;
    while (a[i] != '\0')
    {
        while (a[j] != ' ')
        {
            length = j - i;
            j++;
        }
        if (length > strlen(word))
        {
            strncpy_s(a, word,length);
        }

        j++;
        i = j;
    }
}


int main()
{
    char s[100000],b[100]={0};
    printf("请输入一串字符\n");
    gets(s);

    find(s, b);

    printf("最长的单词是%s", b);

    return 0;
}


strncpy_s总是报错,版本是vs2022

img


,往里边再输入一个参数之后,还有另外的问题

img

strncpy_s(a, word,length); 修改为:strncpy_s(a,sizeof(a), word,length);
代码修改如下,供参考:

#include <stdio.h>
#include <string.h>
void find(char a[], char word[])
{
    int i = 0, j = 0;
    int length = 0;
    while (a[i] != '\0')
    {
        if (a[i] == ' ')
        {
            i++;
        }else{
            j = i;
            while (a[j] != ' ' && a[j] != '\0') j++;
            if (j - i > length) //(length > strlen(word))
            {
                length = j - i;
                strncpy(word, a+i,length);
            }
            //j++;
            i = j;
        }
    }
}


int main()
{
    char s[100000],b[100]={0};
    printf("请输入一串字符\n");
    gets(s);

    find(s, b);

    printf("最长的单词是%s", b);
    return 0;
}