从键盘输入一个字符串和一个整数(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********
}
效果:
scanf_s改成scanf_s("%s", a,100);,100表示a的最大输入长度,因为你定义的数组a长度为100。
第一行加上#define _CRT_SECURE_NO_WARNINGS 1