69,368
社区成员
发帖
与我相关
我的任务
分享
# include <stdio.h>
void copy(char *, int, int);
int main(void)
{
int n, m;
int i;
char str[20] = {0};
printf("enter num\n");
scanf("%d %d", &n, &m);
getchar();
for (i = 0; i < n; i++)
{
scanf("%c", &str[i]);
}
copy(str, m, n);
return 0;
}
void copy(char * str, int m, int n)
{
int i;
for (i = m-1; i < n; i++)
printf("%c", str[i]);
printf("\n");
}
问题出在你输入数字之后按下的那个回车,被下面循环中的获取字符操作,存在了字符数组里,你看上去输入的是qwerty,其实应该是\nqwert并没有Y。你传进去的参数m是2,在数组中是第三个元素,即w,所以输出的内容是wert。证据就是在你的输出代码中并没有任何换行符,但是输出内容却自动换行了。在scanf2个数字之后使用getchar()接住换行符,或者使用flushall()清空缓冲区即可。
引用赵老师的名言,F9加断点,F5执行,F10单步执行,自己观察监视器中各个变量的实时数据,进行推测哪里出错了。然后F11进入函数什么的,后面的我不会编了。好了就说到这里,不知道我上面的解答有没什么错误,后续跟上即可。