首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串逆序打印 高手来看看~解决思路

2012-04-02 
字符串逆序打印 高手来看看~1 #include stdio.h23 char * setchar(char *str)4 {5int len 0, i 06c

字符串逆序打印 高手来看看~
1 #include <stdio.h>
  2 
  3 char * setchar(char *str)
  4 {
  5 int len = 0, i = 0;
  6 char *strlen = str;
  7 char *restr = str; // 本来要声明成 static 的 但 gcc 总是报 “初始值设定不是常量” 不解 ....
  8 
  9 while (*strlen++) len++;
 10 strlen -= 2; //借鉴某高手的 去‘\0’ 不过为什么要减去两个字节呢? -1 不就好了么? 
 11 len -= 2; //本人为配合下面循环照猫画虎 ....
 12 
 13 while (len >= 0)
 14 {
 15 restr[i] = strlen[len]; // 逆序 将strlen 倒着打印给 restr
 16 i++;
 17 len--;
 18 }
 19 printf("%s \n", restr); // 检测
 20 return restr;
 21 
 22 }
 23 int main(void)
 24 {
 25 char str[] = {"FXXXXXX world"};
 26 printf("%s \n", setchar(str));
 27 return 0;
 28 }

打印出来是乱码 ..............
高手给看看 是不是字符串没截断呢?



[解决办法]

C/C++ code
template <class BidirectionalIterator>void reverse ( BidirectionalIterator first, BidirectionalIterator last){    if(first>=last) return;    std::swap (*first++,*last--);    reverse(first,last);}
[解决办法]
BCB的HELP
#include <string.h>
#include <stdio.h>

int main(void)
{
char *forward = "string";

printf("Before strrev(): %s\n", forward);
strrev(forward);
printf("After strrev(): %s\n", forward);
return 0;
}
[解决办法]
//*这个是在WIN-TC编译下通过的。*//
#include <stdio.h>
char *setchar(char *str1,char *str2)
{
int len=0;
char *strlen=str1;
char *restr=str2;
strlen=str1;

while(*(strlen++))len++;
strlen-=2;
while(len-->=0)*(restr++)=*(strlen--);
*(restr-1)='\0';
printf("%s\n",str2);
return str2;
}
main()
{int i;
char str1[20],str2[20];
gets(str1);
printf("%s\n",setchar(str1,str2));
getch();
}
[解决办法]
自己看
C/C++ code
#include <stdio.h>char * setchar(char *str){    int len = 0, i = 0;    char *strlen = str;    char *restr = str;    while (*strlen++)        len++;    // strlen -= 2;  这里不用减    len -= 1; // 这里减1    while (len >= 0) {//        restr[i] = strlen[len]; // 这句一定错了        char c = str[len];        str[len] = restr[i];        restr[i] = c;        i++;        len--;    }    printf("%s \n", restr);    return restr;}int main(void){    char str[] = { "FXXXXXX world" };    printf("%s \n", setchar(str));    return 0;} 

热点排行