{
int i;
for(i = 0;*dest[i] = *src[i];i++)
;
return dest;
}
为什么不行?
20 个解决方案
#1
char * mystrcpy(char * strDest,const char * strSrc)
{
if(strDest==NULL || strSrc==NULL)
{
return NULL;
}
char * temp_src =(char *)strSrc;
while( (*strDest++ = *temp_src++)!= '\0');
return strDest;
}
#2
for(i = 0;dest[i] = src[i];i++)
;
==========
加多了*
;
==========
加多了*
#3
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;dest[i] = src[i];i++)//应该这样子,你混乱了,楼主
;
return dest;
}
#4
二楼正解
#5
语病太多了,1、要么用指针,要么用下标,你这两个都用上了;2、for循环没有结束条件,当然不行了。如果用下标的话,for循环那句应该写成:
for (i = 0; src[i] != '\0'; dest[i] = src[i], i++)
for (i = 0; src[i] != '\0'; dest[i] = src[i], i++)
#6
犀利!
#7
*dest[i] 错了 用dest[i]就可以了 src也一样
#8
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;*(dest+i) = *(src+i);i++)//或者这样子,你混乱了,楼主
;
return dest;
}
#9
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;*dest[i] = *src[i];i++)
;
return dest;
}
还从来没见过这样的程序
char类型指针参数 “*dest” 和 “*src”怎么变成了 char类型的指针数组 “*dest[i]”和
“*src[i]” 了 ,
还有for循环语句可以没有循环体吗? 返回值应该也要加上“*”吧。
c和c++ 很久没用了 不太记得了 并且学得也不精 哪位高手帮我解答下
{
int i;
for(i = 0;*dest[i] = *src[i];i++)
;
return dest;
}
还从来没见过这样的程序
char类型指针参数 “*dest” 和 “*src”怎么变成了 char类型的指针数组 “*dest[i]”和
“*src[i]” 了 ,
还有for循环语句可以没有循环体吗? 返回值应该也要加上“*”吧。
c和c++ 很久没用了 不太记得了 并且学得也不精 哪位高手帮我解答下
#10
char * mystrcpy(char * str,const char *destr){
char *temp=str;
while(*destr!='\0'){
*(temp++)=*(destr++);
}
*temp='\0';
return str;
}
这个清楚点
char *temp=str;
while(*destr!='\0'){
*(temp++)=*(destr++);
}
*temp='\0';
return str;
}
这个清楚点
#11
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;dest[i] = src[i];i++)
;
return dest;
}
或者
char *mystrcpy(char *dest, const char *src)
{
char *tmp = dest;
int i;
for(i = 0;*tmp++ = *src++;i++)
;
return dest;
}
{
int i;
for(i = 0;dest[i] = src[i];i++)
;
return dest;
}
或者
char *mystrcpy(char *dest, const char *src)
{
char *tmp = dest;
int i;
for(i = 0;*tmp++ = *src++;i++)
;
return dest;
}
#12
char *str与char str[]等同,操作方式几乎完全一样。
#13
3楼对的。。
#14
蛋痛的面试题,最少做过五次;
#15
++
#16
参考
C:\Microsoft SDK\src\crt\strcat.c
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\src\crt\strcat.c
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\STRCAT.C
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Intel\STRCAT.ASM
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\cstrings\strcat.asm
之一里面strcpy函数的实现源代码。
C:\Microsoft SDK\src\crt\strcat.c
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\src\crt\strcat.c
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\STRCAT.C
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Intel\STRCAT.ASM
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\cstrings\strcat.asm
之一里面strcpy函数的实现源代码。
#17
2L有错,不应该保存strSrc,应该保存strDest。
#18
#include <stdio.h>
char* mystrcpy(char *dest, const char *src){
char *p = dest;
while(*dest++ = *src++);
return p;
}
int main(void){
char buf[10];
printf("%s", mystrcpy(buf,"hello"));
}
char* mystrcpy(char *dest, const char *src){
char *p = dest;
while(*dest++ = *src++);
return p;
}
int main(void){
char buf[10];
printf("%s", mystrcpy(buf,"hello"));
}
#19
请问下为什么应该保存strDest?
#20
C/C++ code?1234567891011char * mystrcpy(char * strDest,const char * strSrc){ if(strDest==NULL || strSrc==NULL) { return NULL; } char * temp_src =(char *)strSrc; whil……
2L有错,不应该保存strSrc,应该保存strDest。
请问下为什么应该保存strDest?
char* tmp_src=(char*)strSrc;这段代码,旨在栈中分配一块内存用来保存源字符串的首地址,但是将整段代码运行完毕,个人感觉并没有用到这一保存来的地址。linux下调试这段代码,无论你是保存源字符串的地址,目标字符串的地址,或者是对两者都不保存,并不影响你结果返回目标字符串的首地址,也就是说,不加这句,或者你保存任何一个,结果都是一样的。个人见解,不足之处多多见谅。
#21
#1
char * mystrcpy(char * strDest,const char * strSrc)
{
if(strDest==NULL || strSrc==NULL)
{
return NULL;
}
char * temp_src =(char *)strSrc;
while( (*strDest++ = *temp_src++)!= '\0');
return strDest;
}
#2
for(i = 0;dest[i] = src[i];i++)
;
==========
加多了*
;
==========
加多了*
#3
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;dest[i] = src[i];i++)//应该这样子,你混乱了,楼主
;
return dest;
}
#4
二楼正解
#5
语病太多了,1、要么用指针,要么用下标,你这两个都用上了;2、for循环没有结束条件,当然不行了。如果用下标的话,for循环那句应该写成:
for (i = 0; src[i] != '\0'; dest[i] = src[i], i++)
for (i = 0; src[i] != '\0'; dest[i] = src[i], i++)
#6
for(i = 0;dest[i] = src[i];i++)
;
==========
加多了*
犀利!
#7
*dest[i] 错了 用dest[i]就可以了 src也一样
#8
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;*(dest+i) = *(src+i);i++)//或者这样子,你混乱了,楼主
;
return dest;
}
#9
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;*dest[i] = *src[i];i++)
;
return dest;
}
还从来没见过这样的程序
char类型指针参数 “*dest” 和 “*src”怎么变成了 char类型的指针数组 “*dest[i]”和
“*src[i]” 了 ,
还有for循环语句可以没有循环体吗? 返回值应该也要加上“*”吧。
c和c++ 很久没用了 不太记得了 并且学得也不精 哪位高手帮我解答下
{
int i;
for(i = 0;*dest[i] = *src[i];i++)
;
return dest;
}
还从来没见过这样的程序
char类型指针参数 “*dest” 和 “*src”怎么变成了 char类型的指针数组 “*dest[i]”和
“*src[i]” 了 ,
还有for循环语句可以没有循环体吗? 返回值应该也要加上“*”吧。
c和c++ 很久没用了 不太记得了 并且学得也不精 哪位高手帮我解答下
#10
char * mystrcpy(char * str,const char *destr){
char *temp=str;
while(*destr!='\0'){
*(temp++)=*(destr++);
}
*temp='\0';
return str;
}
这个清楚点
char *temp=str;
while(*destr!='\0'){
*(temp++)=*(destr++);
}
*temp='\0';
return str;
}
这个清楚点
#11
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i = 0;dest[i] = src[i];i++)
;
return dest;
}
或者
char *mystrcpy(char *dest, const char *src)
{
char *tmp = dest;
int i;
for(i = 0;*tmp++ = *src++;i++)
;
return dest;
}
{
int i;
for(i = 0;dest[i] = src[i];i++)
;
return dest;
}
或者
char *mystrcpy(char *dest, const char *src)
{
char *tmp = dest;
int i;
for(i = 0;*tmp++ = *src++;i++)
;
return dest;
}
#12
char *str与char str[]等同,操作方式几乎完全一样。
#13
3楼对的。。
#14
蛋痛的面试题,最少做过五次;
#15
C/C++ code
char * mystrcpy(char * strDest,const char * strSrc)
{
if(strDest==NULL || strSrc==NULL)
{
return NULL;
}
char * temp_src =(char *)strSrc;
while( (*strDest++ ……
++
#16
参考
C:\Microsoft SDK\src\crt\strcat.c
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\src\crt\strcat.c
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\STRCAT.C
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Intel\STRCAT.ASM
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\cstrings\strcat.asm
之一里面strcpy函数的实现源代码。
C:\Microsoft SDK\src\crt\strcat.c
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\src\crt\strcat.c
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\STRCAT.C
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\Intel\STRCAT.ASM
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\strcat.c
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\strcat.asm
C:\Program Files\Borland\CBuilder6\Source\Rtl\Source\cstrings\strcat.asm
之一里面strcpy函数的实现源代码。
#17
C/C++ code?1234567891011char * mystrcpy(char * strDest,const char * strSrc){ if(strDest==NULL || strSrc==NULL) { return NULL; } char * temp_src =(char *)strSrc; whil……
2L有错,不应该保存strSrc,应该保存strDest。
#18
#include <stdio.h>
char* mystrcpy(char *dest, const char *src){
char *p = dest;
while(*dest++ = *src++);
return p;
}
int main(void){
char buf[10];
printf("%s", mystrcpy(buf,"hello"));
}
char* mystrcpy(char *dest, const char *src){
char *p = dest;
while(*dest++ = *src++);
return p;
}
int main(void){
char buf[10];
printf("%s", mystrcpy(buf,"hello"));
}
#19
C/C++ code?1234567891011char * mystrcpy(char * strDest,const char * strSrc){ if(strDest==NULL || strSrc==NULL) { return NULL; } char * temp_src =(char *)strSrc; whil……
2L有错,不应该保存strSrc,应该保存strDest。
请问下为什么应该保存strDest?
#20
C/C++ code?1234567891011char * mystrcpy(char * strDest,const char * strSrc){ if(strDest==NULL || strSrc==NULL) { return NULL; } char * temp_src =(char *)strSrc; whil……
2L有错,不应该保存strSrc,应该保存strDest。
请问下为什么应该保存strDest?
char* tmp_src=(char*)strSrc;这段代码,旨在栈中分配一块内存用来保存源字符串的首地址,但是将整段代码运行完毕,个人感觉并没有用到这一保存来的地址。linux下调试这段代码,无论你是保存源字符串的地址,目标字符串的地址,或者是对两者都不保存,并不影响你结果返回目标字符串的首地址,也就是说,不加这句,或者你保存任何一个,结果都是一样的。个人见解,不足之处多多见谅。