w*********r 发帖数: 18 | 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;i
p1[i]=toupper (p1[i]);
}
}
|
d***y 发帖数: 65 | 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) {
|
w*********r 发帖数: 18 | 3 这是一个面试题,说此函数poorly written,要求找出what's wrong with it并且改写。
我觉得最大问题可能就是边界,但是运行也没发现问题.
【在 d***y 的大作中提到】 : works fine with gcc 4.1
|
p**********g 发帖数: 9558 | |
d***y 发帖数: 65 | 5 Maybe you can make it char by char..
写。
【在 w*********r 的大作中提到】 : 这是一个面试题,说此函数poorly written,要求找出what's wrong with it并且改写。 : 我觉得最大问题可能就是边界,但是运行也没发现问题.
|
s*******d 发帖数: 59 | 6 new抛出异常就会有内存泄露了
c++又没有try finally,对异常很不友好。 |
A***o 发帖数: 12 | 7 是啊,这么一个简单的字符串比较,为什么还分配内存,字符串拷贝?
【在 p**********g 的大作中提到】 : 直接比较,不用分配内存吧
|
A***o 发帖数: 12 | 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) {
|