C和指针4.4
来源:互联网 发布:啊哈算法 pdf 完整版 编辑:程序博客网 时间:2024/06/04 00:48
编写函数,它的原型如下: void copy_n(char dst[],char src[],int n); 这个函数用于把一个字符串从数组src复制到数组dst,但是有如下要求:必需正好复制n个字符到dst数组中,不能多,不能少。如果src字符串的长度小于n,你必需在复制后的字符串尾部补充足够的nul字符,使他的长度正好是n。如果src的长度长于或等于n,那么你在dst中存储n个字符后便可停止。此时,数组dst将不是以nul字符结尾。注意调用copy_n时,它应该在dst[0]至dst[n-1]的空间中存储一些东西,但也只局限那些位置,这与src的长度无关。
我是这样编写的:
#include <iostream>
#include <string>
using namespace std;
void main ()
{ void copy_n(char dst[],char src[],int n) ;
char a[100];
char b[100]="yanghailin"; //注意只能在定义的时候直接赋值,否则错误
//strncpy(a,b,4);
copy_n(a,b,4);
cout<<a<<endl;
}
void copy_n(char dst[],char src[],int n) //问题:如何获取src长度
{
int len=strlen(src);
int i;
if (len>=n)
{
for (i=0;i<n;i++)
dst[i]=src[i];
dst[i]='\0';
}
else
{
for ( i=0;i<len;i++)
dst[i]=src[i];
dst[i]='\0';
}
}
题目中的要求不是太明白,我这个应该和strncpy实现的功能差不多。但是书上给出的代码如下:只有函数部分
#include <iostream>
#include <string>
using namespace std;
void main ()
{ void copy_n(char dst[],char src[],int n) ;
void copy_n1(char dst[],char src[],int n) ;
char a[100];
char b[100]="yanghailin"; //注意只能在定义的时候直接赋值,否则错误
//strncpy(a,b,4);
copy_n1(a,b,20);
cout<<a<<endl;
}
void copy_n(char dst[],char src[],int n) //问题:如何获取src长度
{
int len=strlen(src);
int i;
if (len>=n)
{
for (i=0;i<n;i++)
dst[i]=src[i];
dst[i]='\0';
}
else
{
for ( i=0;i<len;i++)
dst[i]=src[i];
dst[i]='\0';
}
}
void copy_n1(char dst[],char src[],int n)
{
int dst_index,src_dex;
src_dex=0;
for (dst_index=0;dst_index<n;dst_index+=1)
{
dst[dst_index]=src[src_dex];
if(src[src_dex]!='\0')
src_dex+=1;
}
}
我调试了下:发现在n比src的长度大时出来结果是准确的,但是n比src长度小时,因为没有nul结束标志,前n个字符正确的,后面是乱码 “烫~~~”
- C和指针4.4
- c和c指针
- 【C和指针】函数指针
- 【C和指针】const指针
- 《c和指针》函数指针
- c和指针详解------指针
- C指针和指针的指针
- C++primer 4.4 数组指针和指针数组(转)
- 【c/c++】指针数组和数组指针
- 【c/c++】指针函数和函数指针
- C和指针
- c和指针
- C和指针学习
- 《C 和指针》
- C和指针
- c和指针
- 002-C和指针
- C和指针
- Android播放视频
- 51nod 1285 山峰和分段
- 不能为虚拟电脑 打开一个新任务
- jsp中的c标签的用法
- MySQL命令大全
- C和指针4.4
- SCOPE_IDENTITY的用法
- 用位域描述float和double值
- 在 Win8 下安装 MongoDB
- 深度学习用于图片的分类和检测总结
- 关于内存管理的教程 -01-
- 修路方案
- poj 3669 Meteor Shower
- hdoj 一只小蜜蜂