易截截图软件、单文件、免安装、纯绿色、仅160KB

C 面试题之找错题


找错题
  试题1:
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}
  试题2:
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
  str1[i] = 'a';
 }
 strcpy( string, str1 );
}
  试题3:
void test3(char* str1)
{
 char string[10];
 if( strlen( str1 ) <= 10 )
 {
  strcpy( string, str1 );
 }
}
  解答:
我对这几道题目的分析如下:
1、  字符串和字符数组char str1[]的异同点:
通过实例说明:string str=”0123456789”; char str1[]={0,1,2,3,4,5,6,7,8,9}
(1) 实际上字符串str也是由一个个的字符构成的,每一个字符都占据一个字节的空间,这一点和字符数组str1是一样的,但是字符串str后面会有一个追加的空字符’\0’来表示字符串的结尾,而字符数组是不用的。图示如下:
str字符串
0
1
2
3
4
5
6
7
8
9
\0
str1字符数组
0
1
2
3
4
5
6
7
8
9
                           
(2) 但是我们在使用strlen()函数,获取字符串或字符数组长度时,都是10,因为在计算字符串长度时,并没有将字符串的最后一个空字符’\0’计算在内,这一点可以参照下面的strlen()函数的具体实现。
2、  关于字符串拷贝函数strcpy():
这个函数需要两个字符指针char*参数,第一个参数表示目的字符串,第二个参数表示源字符串。但是需要注意的就是第二个字符指针必须指向一个字符串,而不能是一个字符数组,因为strcpy()函数具体实现里面有一个for循环,而这个for循环的结束条件就是碰到字符串中的空字符’\0’,如果第二个字符指针指向字符数组的话,将会导致for循环得不到正常结束,从而导致拷贝错误。Strcpy()函数也可参照下面的具体实现代码。
3、  字符串指针char*或称做字符指针的初始化问题(关键要习惯这种初始化格式):
(1) 将char*看作字符串指针,使用字符串初始化:
string str=”12345”;
char* ch=str;//错误,不能将str型赋给char*,因为str是一个string类对象,类型不同不能赋值。
但是,下面的初始化就是正确的:
char


相关文档:

用VFP9.0和SQL2000构建C/S版本的人事管理系统

本实例一套人事管理系统:开发工具为VFP9.0、SQL2000、EXCEL;使用了Adobe Photoshop平面设计软件,采用了SPT穿透技术,调用了API函数,实现了对系统时间的统一控制、对DNS的代码控制、对域名解析的应用,等等
晕,怎么上传,(包含源码未编译的)想要的给我发E-MAIL:zhao@tom.com ......

C/C++头文件一览

#include <assert.h>    //设定插入点
#include <ctype.h>     //字符处理
#include <errno.h>     //定义错误码
#include <float.h>     //浮点数处理
#include <fstream.h>    //文件输入/输出
#include <iomanip.h>    //参数化输入/输出
#include & ......

Android首次发行C/C++ SDK

Google Android开发博客今天宣布,即日起开放针对Android平台的原生软件开发SDK下载。由于在SDK前面又加上了原生二字,即Native Development Kit,因此又被Google称为NDK。在此之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生 SDK的公布可以让开发者更加直接的接触Android系统资源, ......

C 字符串函数大全

函数名: stpcpy
功 能: 拷贝一个字符串到另一个
用 法: char *stpcpy(char *destin, char *source);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
   char string[10];
   char *str1 = "abcdefghi";
   stpcpy(string, str1);
 & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号