这是一个不使用strlen()
和strrev()
函数的字符串反转程序。关于此代码,请帮助我:length
函数显示11
,但reverse
函数无效。
#include <stdio.h>
#include <conio.h>
int length(char*);
char *reverse(char*);
main() {
printf("%d", length("himanshupal"));
printf("%s", reverse("himanshupal"));
getch();
}
/* used to calculate the lenghth*/
int length(char *p) {
int l;
for (l = 0; *(p+l) != '\0'; l++);
return (l);
}
char *reverse(char *p) { // function for reversing the string
// l used for length
int i, l;
char t;
for (l = 0; *(p+l) != '\0'; l++);
for (i = 0; i < l / 2; i++) {
t = *(p+i);
*(p+i) = *(p+l-1-i);
*(p+l-1-i) = t;
}
return (p);
}
答案 0 :(得分:1)
字符串文字在C和C ++中是不可变的。任何修改字符串文字的尝试都会导致未定义的行为。:)
请改用字符数组。例如
init
考虑到声明像
这样的函数长度更好 int main( void )
//^^^^^^^^^^^^^^
{
char s[] = "himanshupal";
printf( "%d\n", length( s ) );
printf( "%s\n", reverse( s ) );
getch();
}