51Testing软件测试论坛

标题: 求助C语言中字符串倒置算法! [打印本页]

作者: daixing521    时间: 2008-5-12 16:31
标题: 求助C语言中字符串倒置算法!
如题!有知道的帮个忙。把算法详细的说明一下。
作者: fishy    时间: 2008-5-13 17:13
标题: 是指这个吗?
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
函数头是这样的:

//pStr是指向以''\0''结尾的字符串的指针
//steps是要求移动的n
void LoopMove ( char * pStr, int steps )
{
//请填充...
}

解答:
正确解答1:
void LoopMove ( char *pStr, int steps )
{
    int n = strlen( pStr ) - steps;
    char tmp[MAX_LEN];   
    strcpy ( tmp, pStr + n );
    strcpy ( tmp + steps, pStr);   
    *( tmp + strlen ( pStr ) ) = ''\0'';
    strcpy( pStr, tmp );
}

正确解答2:
void LoopMove ( char *pStr, int steps )
{
    int n = strlen( pStr ) - steps;
    char tmp[MAX_LEN];   
    memcpy( tmp, pStr + n, steps );   
    memcpy(pStr + steps, pStr, n );     
    memcpy(pStr, tmp, steps );   
}
作者: ZHUALIKE    时间: 2008-5-13 21:17
把一个字符串从后往前表示出来?
int n=strlen(str),m
char new(n)
for (i=n;i>=0;i--)
{
m=n-i;
new(m)=str(n);
}
具体怎么写记不清楚了,好久没写c语言了,思想就是新建一个字符串把原字符串从后往前依次把值附到新字符串中去,strlen获得字符串长度,
for (i=n;i>=0;i--)实现从后向前循环
作者: bwg198411    时间: 2008-5-13 22:32
有个系统函数 你可以试试
strrev    包含在头文件  string.h中 作用是 颠倒串中各字符的顺序

#include<stdio.h>
#include<string.h>
main()
{
     char *p="123456789";
     *p=strrev(p);
     printf("%s",p);
     getch();
}

在win-tc中运行成功 输出为987654321




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2