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);
}
提问的艺术(中文版) 在网络世界里,当提出一个技术问题时,你能得到怎样的回答... 或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得...
做法:先将整个字符串倒序,然后将第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;
}