首页 > 代码库 > The practice program of C on point
The practice program of C on point
//字符反向排列 //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; }只是多了个中间变量而已,这是为什么呢?
The practice program of C on point
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。