由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请帮忙看段code,为什么过不了。
相关主题
问一个精华区里的题目常见编程面试题答案的2种格式,哪种最好?
再问个简单的C问题懒得写了,想练手的就写写贴在这里吧
菜鸟求救 请大家看看我的代码有没有问题reverse linked list 问题, double 和 single 的不同
leetcode上wild match问个题?
发一个刚面的startup面经C++ 面试题
求帮忙看看哪里有问题!请问这样写程序错了吗?
请问strcpy()和memcpy()的写法问题A challenging interview question: revert a string
怎么检查极端情况?这题谁知道答案?
相关话题的讨论汇总
话题: end话题: str话题: char话题: null话题: reverse
进入JobHunting版参与讨论
1 (共1页)
c**z
发帖数: 669
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--;
}
}
y***n
发帖数: 1594
2
我没有仔细看,但对C不熟的,尽量避免指针操作,用c++ string, 然后用i, j 来
index。
为什么java, c#, python, Ruby 都不让指针操作,是有原因的。。
l*********8
发帖数: 4642
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--;

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

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

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

【在 c**z 的大作中提到】
: 能compile,但是run time will crash
l*********8
发帖数: 4642
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--;

l*********8
发帖数: 4642
10
恩,应该是这个原因
H**********5
发帖数: 2012
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 的大作中提到】
: 恩,应该是这个原因
y***n
发帖数: 1594
12
楼上还有VC6, 牛 。。。
y***n
发帖数: 1594
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;
}
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
这题谁知道答案?发一个刚面的startup面经
分享一道最近碰到的很好的面试题。求帮忙看看哪里有问题!
请教一个字符串比较排序的问题 (转载)请问strcpy()和memcpy()的写法问题
问两个题怎么检查极端情况?
问一个精华区里的题目常见编程面试题答案的2种格式,哪种最好?
再问个简单的C问题懒得写了,想练手的就写写贴在这里吧
菜鸟求救 请大家看看我的代码有没有问题reverse linked list 问题, double 和 single 的不同
leetcode上wild match问个题?
相关话题的讨论汇总
话题: end话题: str话题: char话题: null话题: reverse