c语言程序设计问题。

从键盘输入一个字符串和一个整数(m),编程移动字符串中的字符,移动规则如下:把第1到第m个字符,平移到字符串的后部,把第m+1到字符串末尾的字符平移到字符串的前部。提示:可借助其他字符数组。
测试输入:
abcdefghi
4
预期输出:
移动后的结果为efghiabcd

#include<stdio.h>
#include <string.h>
void main()
{
    //*****begin********
    int  n, len, j = 0, i;
    char a[100];
    scanf_s("%s", a);
    scanf_s("%d", &n);
    len = strlen(a);
    printf("移动后的结果为");
    for (i = n; i < len; i++)
    {
        printf("%c", a[i]);
    }
    for (i = 0; i < n; i++)
    {
        printf("%c", a[i]);
    }

    //*****end********
}

这段代码在测试网站上运行成功,但在visual2022就报错,什么原因?(多半是scanf的问题,但是好像格式也没什么问题啊,总是stdio里面报错)

这样就可以了,望采纳,谢谢,代码:

#include<stdio.h>
#include <string.h>
void main()
{
    //*****begin********
    int  n, len, j = 0, i;
    char a[100];
    scanf("%s", a);
    scanf("%d", &n);
    len = strlen(a);
    printf("移动后的结果为");
    for (i = n; i < len; i++)
    {
        printf("%c", a[i]);
    }
    for (i = 0; i < n; i++)
    {
        printf("%c", a[i]);
    }

    //*****end********
}

效果:

img

 scanf_s改成scanf_s("%s", a,100);,100表示a的最大输入长度,因为你定义的数组a长度为100

第一行加上#define _CRT_SECURE_NO_WARNINGS 1