使用strcpy_s时,规定了缓存内存,运行还是出现断点被中断了

#include<stdio.h>
#include<string.h>
void main()
{
    char string[20];
    char str[3][20];
    int i;
    for (i = 0; i < 3; i++)
    {
        gets(str[i]);
        if (strcmp(str[0], str[1]) > 0)//如果字符串1>字符串2
            strcpy_s(string,strlen(str[0])+1,str[0]);//把字符串1复制到字符数组string中去
        else
            strcpy_s(string, strlen(str[1]) + 1, str[1]);//否则将字符串2复制到字符数组string中去
        if (strcmp(str[2], string) > 0)//如果字符串3>字符数组string
            strcpy_s(string, strlen(str[2]) + 1, str[2]);//则把字符串3复制到字符数组string中去
        printf("\nthe largest string is:\n%s\n", string);
        getch();
        return 0;
    }
}

这。。。我看原因是你在其它的字符数组没有赋值的时候就用它们去比较了,这个时候里面的内存都是一些脏内存,会出问题的。

把这堆拿到for循环外面试试。

        if (strcmp(str[0], str[1]) > 0)//如果字符串1>字符串2
            strcpy_s(string,strlen(str[0])+1,str[0]);//把字符串1复制到字符数组string中去
        else
            strcpy_s(string, strlen(str[1]) + 1, str[1]);//否则将字符串2复制到字符数组string中去
        if (strcmp(str[2], string) > 0)//如果字符串3>字符数组string
            strcpy_s(string, strlen(str[2]) + 1, str[2]);//则把字符串3复制到字符数组string中去
        printf("\nthe largest string is:\n%s\n", string);

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632