一道c语言编程题,找不到错处,求大神

要求移动字符串的内容,规则是把1到m个字符串平移到最后,第m+1到最后得字符移动到前面,如m=2,ABCD得CDAB我这么做哪里有问题... 要求移动字符串的内容,规则是把1到m个字符串平移到最后,第m+1到最后得字符移动到前面,如m=2,ABCD得CDAB
我这么做哪里有问题
展开
 我来答
冯小气气
2019-02-01 · 知道合伙人IT服务行家
冯小气气
知道合伙人IT服务行家
采纳数:98 获赞数:239
八年编程经验,公司核心技术人员。

向TA提问 私信TA
展开全部

for (j = 0; j <N - 1; j++)这个语句的问题,当字符串长度没有那么大时就挪到了最后去了。改成for (j = 0; j < strlen(w) - 1; j++)就可以了。宏冲

实际上还有一种更简单的解坦核决方法,使用memcpy直接拷贝内存。

void fun(char* w, int m)
{
int len = strlen(w);
char* tmp 蔽信歼= (char*)malloc(sizeof(char)*N);
memset(tmp, 0, N);
memcpy(tmp, w, N);
memcpy(w, tmp + m, len - m);
memcpy(w + m, tmp, m);
free(tmp);
}
匿名用户
2019-02-01
展开全部
提问的艺灶灶尺术(中文版) 在网络世界里,当提出一个技术问题时,你能得到怎样的回答隐高... 或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,辩燃你越能得...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2019-02-01 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部

做法樱瞎判:先将整个字符串倒序,然后将第1~(n-m)个字符和第(n-m+1)~n个字符分别倒序即可。

#include<stdio.h>
#include<string.h>
char* reverse(char* beg, char* end)
{
    char *i = beg, *j = end;
    while(i<j)
    {
 神圆       char t = *i;
        *i = *j;
        *j = t;
        i++;
        j--;
    }
   脊改 return beg;
}
int main()
{
    char a[80];
    int m, n;
    scanf("%s", a);
    scanf("%d", &m);
    n = strlen(a);
    reverse(a, a+n-1);
    reverse(a, a+n-m-1);
    reverse(a+n-m, a+n-1);
    puts(a);
    return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式