Redian新闻
>
请帮忙看段code,为什么过不了。
avatar
请帮忙看段code,为什么过不了。# JobHunting - 待字闺中
c*z
1
reverse a string
void reverse(char* str)
{
// check null
if ( str == NULL ) return;
char* end = str;
char temp;
while( *end != NULL )
end++;
end--;
while( str < end )
{
temp = *str;
*str = *end; // 这里每次都会垮掉
*end = temp;
str++;
end--;
}
}
avatar
y*n
2
我没有仔细看,但对C不熟的,尽量避免指针操作,用c++ string, 然后用i, j 来
index。
为什么java, c#, python, Ruby 都不让指针操作,是有原因的。。
avatar
l*8
3
while( *end != NULL )
改成 while(*end)

【在 c**z 的大作中提到】
: reverse a string
: void reverse(char* str)
: {
: // check null
: if ( str == NULL ) return;
: char* end = str;
: char temp;
: while( *end != NULL )
: end++;
: end--;

avatar
y*n
4
这个就是功力了,一般真的不建议用 Raw C 来面,特别是一般的公司。。
avatar
Q*r
5
你把'\0'也拿去翻转了
你的*end = '\0'
不明白你的垮掉是什么意思?难道你是说运行的时候跑飞了?
avatar
c*r
6
segmentation fault ?

【在 Q****r 的大作中提到】
: 你把'\0'也拿去翻转了
: 你的*end = '\0'
: 不明白你的垮掉是什么意思?难道你是说运行的时候跑飞了?

avatar
c*z
7
能compile,但是run time will crash
avatar
Q*r
8
你run的时候是不是还printf这个 string了?

【在 c**z 的大作中提到】
: 能compile,但是run time will crash
avatar
l*8
9
void reverse(char *s) {
if (!s) return;
for (char *end = s+strlen(s)-1; s < end; ++s, --end)
swap(*s, *end);
}

【在 c**z 的大作中提到】
: reverse a string
: void reverse(char* str)
: {
: // check null
: if ( str == NULL ) return;
: char* end = str;
: char temp;
: while( *end != NULL )
: end++;
: end--;

avatar
l*8
10
恩,应该是这个原因
avatar
H*5
11
你的代码本身没问题,
我怀疑是你写测试时

char a[]=“12345”;
写成
char a*=“12345”;
导致常量字符被修改程序死掉的错误。
我刚才在VC6跑了你的代码没有问题
#include
#include
void reverse(char* str)
{
// check null
if ( str == NULL ) return;
char* end = str;
char temp;
while( *end != NULL )
end++;
end--;
while( str < end )
{
temp = *str;
*str = *end;// 这里每次都会垮掉
*end = temp;
str++;
end--;
}
}
main()
{
char a[]="12345";
reverse(a);
cout<}

【在 l*********8 的大作中提到】
: 恩,应该是这个原因
avatar
y*n
12
楼上还有VC6, 牛 。。。
avatar
y*n
13
不用指针的。
void reverse(char s[]){
if (!s) return;
int c, i, j;
for(i = 0, j = strlen(s) - 1; i < j; i++, j--){
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。