pta练习
题目给出的主函数:
#include <stdio.h>
#include <string.h>
void fun(char *pstr,int n,char b);
int main()
{
char str[20],b[20];
int m;
gets(str);
scanf("%d",&m);
fun(str,m,b);
printf("%s",b);
return 0;
}
/ 下面是我的答案 */
void fun(char *pstr,int n,char *b)
{
int m =strlen (pstr);
b=pstr+n;
strncpy(b+(m-n),pstr,n);
b[m]='\0';
}
在这里给出一组输入。例如:
abcefg
2
输出样例:
在这里给出相应的输出。例如:
cefgab
各种方式验证过 总是乱码
各位能够指出一下问题在哪 很多道题都是这样的错误 我就选了一个比较简单的让大家帮我看看 谢谢
类似的题目就能通过
修改处见注释,供参考:
#include <stdio.h>
#include <string.h>
void fun(char *pstr,int n,char* b);
int main()
{
char str[20],b[20];
int m;
gets(str);
scanf("%d",&m);
fun(str,m,b);
printf("%s",b);
system("pause");
return 0;
}
// 下面是我的答案
void fun(char *pstr,int n,char* b)
{
int m =strlen (pstr);
//b=pstr+n; 修改 这里只改变了 b 的指向
strncpy(b,pstr+n,m-n);
strncpy(b+(m-n),pstr,n);
b[m]='\0';
//printf ("%s\n",b); //这个是我添加在里面来验证是否得到正确结果
}
void fun(char *pstr,int n,char *b)
{
int m = strlen (pstr);
*b=*pstr;
int i;
for(i = 0; i < m; ++i){
b[(i-n+m)%m] = pstr[i];
}
}