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

2024-12-16 11:26:10
推荐回答(3个)
回答1:

for (j = 0; 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);
}

回答2:

提问的艺术(中文版) 在网络世界里,当提出一个技术问题时,你能得到怎样的回答... 或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得...

回答3:

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

#include
#include
char* reverse(char* beg, char* end)
{
    char *i = beg, *j = end;
    while(i    {
        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;
}