//字符反向排列
//vision 1.2
#include<stdio.h>
void reverse_string( char *str )
{
char *string;//第一个字符位置
char *last_char;//最后一个字符位置
//for( last_char = str; ; last_char++ )
// if( *last_char == '\0' )
// break;
// for( last_char = str; *last_char != '\0'; last_char++ )
// ;
/*
**设置last_char存储最后一个字符位置
*/
for( last_char = &str[0]; *last_char != '\0'; last_char++ )
;
string = &str[0];
last_char--;
/*
**交换前后指针指向位置的值 前指针增加 后指针减少
*/
while( string < last_char )
{
char temp;
temp = *string;
*string++ = *last_char;
*last_char-- = temp;
}
printf( "%s", str );
}
int main( void )
{
char str[10] = {"abcdef"};
reverse_string(str);
return 0;
}
在不使用库函数情况下 自己还是把这个库函数里有的函数敲出来了。只是有个迷惑的地方,这是终究版本,但之前有个版本,输出始终只有源字符串的一半长度,同时也是反转了的,不理解。希望有明白的朋友看见后可以告知下。小子我在此谢谢了~源码如下:
//字符反向排列
//vision 1.2
//程序结果错误 为什么?
//就目前 我猜测问题出在数组的指针上
//直接对原数组的指针进行操作 应该找个中间量存储开始指针。
//未完待续····
#include<stdio.h>
void reverse_string( char *str )
{
char *last_char;//最后一个字符位置
//for( last_char = str; ; last_char++ )
// if( *last_char == '\0' )
// break;
// for( last_char = str; *last_char != '\0'; last_char++ )
// ;
/*
**设置last_char存储最后一个字符位置
*/
for( last_char = &str[0]; *last_char != '\0'; last_char++ )
;
last_char--;
/*
**交换前后指针指向位置的值 前指针增加 后指针减少
*/
while( str < last_char )
{
char temp;
temp = *str;
*str++ = *last_char;
*last_char-- = temp;
}
printf( "%s", str );
}
int main( void )
{
char str[10] = {"abcdxuf"};
reverse_string(str);
return 0;
}
只是多了个中间变量而已,这是为什么呢?