69,382
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
#define MAX 50
void reverse_string(char *string);
int main(){
char name[MAX];
gets(name);
reverse_string(name);
printf("%s",name);
return 0;
}
void reverse_string(char *string)
{
char *ptr = string;
/*
*为什么当我把以下的while循环写成
*while(*ptr++ != '\0')
* ;
*时,程序运行就出现错误了呢
*for(ptr = string; *ptr != '\0';ptr++)
* ;
*也是对的,这三种方法有什么不一样呢?
*/
while(*ptr!= '\0')
ptr++;
ptr--;
/*
**以下三种对string的反序操作都是对的,注意while循环中的string < ptr语句中的<是不能
**被!=代替的若被!=代替,那么对于字符串的长度是偶数的,就不起作用了,因为此时string
**和ptr是永远不会相等的
*/
/*
while(string < ptr){
char temp;
temp = *string;
*string++ = *ptr;
*ptr-- = temp;
}
*/
/*
for(; string < ptr; ptr--,string++){
char temp;
temp = *string;
*string++ = *ptr;
*ptr-- = temp;
}
*/
for(; string < ptr; ptr--,string++){
char temp;
temp = *string;
*string = *ptr;
*ptr = temp;
}
}
#include "stdio.h"
#define MAX 50
void reverse_string(char *string);
int main(){
char name[MAX];
gets(name);
reverse_string(name);
printf("%s",name);
return 0;
}
void reverse_string(char *string)
{
char *ptr = string;
while(*ptr++ != '\0')
;
ptr--;
ptr--;
for(; string < ptr; ptr--,string++){
char temp;
temp = *string;
*string = *ptr;
*ptr = temp;
}
}
while(*ptr++ != '\0')
;
ptr--;
ptr--;
int len = 0;
while(*string++ != '\0'){
len++;
}
int len = 0;
while(*string != '\0'){
string++;
len++;
}