首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问关于strcpy和strcmp的老有关问题(最近准备面试,多谢)

2012-03-02 
请教关于strcpy和strcmp的老问题(最近准备面试,谢谢)最近准备面试,在网上找了些关于C的经典老题。不过C不是

请教关于strcpy和strcmp的老问题(最近准备面试,谢谢)
最近准备面试,在网上找了些关于C的经典老题。
不过C不是很熟悉了,关于strcpy里的一些语句含义不是很清楚
希望大家能给小弟指点一二,不胜感激。
题目如下:
已知strcpy函数原型:char   *strcpy(char   *strDest,   const   char   *strSrc);
其中strDest是目的字符串,strSrc是源字符串
1、不调用C++/C的字符串库函数,编写strcpy
2、strcpy能够将strScr的内容复制到strDest,为什么还要char   *类型的返回值。
1---|char   *strcpy(char   *strDest,   const   char   *strSrc);
2---|{
3---|       assert((strDest   !=   NULL)&&(strSrc   !=   NULL));
4---|       char   *address   =   strDest;
5---|       while((*strDest++   =   *strSrc++)!= '\0 ')
6---|       NULL;
7---|       return   address;
8---|}
//-------问题1(Line1):为什么第二个参数是用const
//-------问题2(Line1):为什么char   *strcpy(char   *strDest,   const   char   *strSrc)后边加了一个“;”号
                char   *strcpy(char   *strDest,   const   char   *strSrc)
                {
                      //......
                }
不是一个函数吗?
//-------问题3(Line6):为什么要在此处增加“NULL;”这样一句话?
真的很菜,希望大家指点迷津,不胜感激

[解决办法]
问题2(Line1):不加“;”号

[解决办法]
问题1 防止你无意更改第二个参数的内容
问题2 加上是错误的
3
NULL;这一行没有什么意义
直接改成这样
while((*strDest++ = *strSrc++)!= '\0 ')
;
[解决办法]
问题1:用const修饰,防止在程序中修改了*strSrc;
问题2:么可能有??是你copy错了。
问题3:就是一个空语句,其实可以就用个分号不要那个NULL也可以。目的就是把*strSrc内容全部复 制到*strDest中去。
[解决办法]
问题1: const char *strSrc 表示strSrc指向的串中的内容是不能改变的比如 *strSrc = 'a ' 之类的语句将被编译器认为是错误
问题2:分号是不应该加的
问题3:NULL; 是接在while语句后的表示一个什么操作都不进行,实际上可以把NULL删除,但是记着要保留分号.

热点排行