wahahahaha__ 2021-03-31 02:13 采纳率: 33.3%
浏览 20

使用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;
    }
}

  • 写回答

2条回答 默认 最新

  • lemon-l 2021-03-31 03:07
    关注

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

    把这堆拿到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);
    评论

报告相同问题?

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错