2301_79991893 2023-11-21 22:58 采纳率: 40%
浏览 6
已结题

请问为什么这个程序会在输入第一个字符串的地方显示异常(相关搜索:c语言)


#include<stdio.h>
#include<string.h>
void findarray(char* str1, char* str2)
{
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    if (len1 < len2)
        printf("NULL");
    else
    {
        for (int i = 0;i <= (len1 - len2);i++)
        {
            int flag = 1;
            for (int j = 0;j < len2;j++)
            {
                if (str2[j] != str1[i + j])
                {
                    flag = 0;
                    break;
                }
            }
            if (flag == -1)
                printf("%d ", i);
            else if(flag==0) 
                printf("-1");
        }
    }
}
int main()
{
    char str1[10001];
    char str2[10001];
    printf("输入被查找的字符串:");
    scanf_s("%s", str1);
    printf("输入要查找的字符:");
    scanf_s("%s", str2);
    findarray(str1, str2);
    return 0;
}

请问为什么这个程序会在输入第一个字符串的地方显示异常?

  • 写回答

4条回答 默认 最新

  • 柯本 2023-11-21 23:11
    关注

    又是一个被微软坑了的,为什么一定要用VS?用gcc就不会有你的问题了

     scanf_s("%s", str2); //肯定会报错的,要用
     scanf_s("%s", str2,10001); //一定要这么写的
    另外
     if (flag == -1)
    永远不会成立的,因为你程序中从来没有将flag 设为-1
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月21日