Redian新闻
>
请帮忙看看这个字符函数的错误在哪里
avatar
请帮忙看看这个字符函数的错误在哪里# Programming - 葵花宝典
w*r
1
int strcmpi (const char* csz1, const char* csz2)
{
int retval=0;
char *p1=NULL, *p2=NULL;

if((csz1 !=NULL) && (csz2 !=NULL))
{ int len1=0, len2=0;
len1=strlen(csz1);
len2=strlen(csz2);
if (len1>0) {
p1= new char [len1+1];
memset(p1,0,len1+1);
strcpy(p1, csz1);
for (int i=0;ip1[i]=toupper (p1[i]);
}
}
avatar
d*y
2
works fine with gcc 4.1

【在 w*********r 的大作中提到】
: int strcmpi (const char* csz1, const char* csz2)
: {
: int retval=0;
: char *p1=NULL, *p2=NULL;
:
: if((csz1 !=NULL) && (csz2 !=NULL))
: { int len1=0, len2=0;
: len1=strlen(csz1);
: len2=strlen(csz2);
: if (len1>0) {

avatar
w*r
3
这是一个面试题,说此函数poorly written,要求找出what's wrong with it并且改写。
我觉得最大问题可能就是边界,但是运行也没发现问题.

【在 d***y 的大作中提到】
: works fine with gcc 4.1
avatar
p*g
4
直接比较,不用分配内存吧
avatar
d*y
5
Maybe you can make it char by char..

写。

【在 w*********r 的大作中提到】
: 这是一个面试题,说此函数poorly written,要求找出what's wrong with it并且改写。
: 我觉得最大问题可能就是边界,但是运行也没发现问题.

avatar
s*d
6
new抛出异常就会有内存泄露了
c++又没有try finally,对异常很不友好。
avatar
A*o
7
是啊,这么一个简单的字符串比较,为什么还分配内存,字符串拷贝?

【在 p**********g 的大作中提到】
: 直接比较,不用分配内存吧
avatar
A*o
8
而且不知道面试者是否也想看你如何比较,而不是直接调用strcmp吧。

【在 w*********r 的大作中提到】
: int strcmpi (const char* csz1, const char* csz2)
: {
: int retval=0;
: char *p1=NULL, *p2=NULL;
:
: if((csz1 !=NULL) && (csz2 !=NULL))
: { int len1=0, len2=0;
: len1=strlen(csz1);
: len2=strlen(csz2);
: if (len1>0) {

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。