CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

怎么样把一个型如"0123456789ABCDEF0123456789ABCDEF"的字符串拷贝

楼主mikelearner(初学者)2005-04-01 23:03:51 在 C/C++ / C语言 提问

#defien   unit8   str[16];  
   
  怎么样把一个型如上面的字符串拷贝上面的str[16]里面去.  
  unit8   str[16].请指教啊.谢谢了  
  问题点数:0、回复次数:15Top

1 楼flying_dancing(小混混-_-)回复于 2005-04-01 23:11:59 得分 0

#include   <iostream>  
  #include   <string>  
  using   namespace   std;  
  int   main()  
  {  
  char   *s="0123456789abcdef";  
  char   ctr[16];  
  strcpy(ctr,s);  
  cout<<ctr<<endl;  
  system("pause");  
  return   0;  
  }Top

2 楼xjp6688(大平/要做必须最好)回复于 2005-04-01 23:14:47 得分 0

也可以用strncpy()Top

3 楼kobefly(科比--网络学习中)回复于 2005-04-01 23:21:59 得分 0

这个你要把16个字节考到16个字节长度的数组中  
   
  只能用strncpy  
   
  #include   <iostream>  
  #include   <cstring>  
  using   namespace   std;  
  #define   char   unit8  
   
  int   main()  
  {  
  char   *s="0123456789abcdef";  
  uint8   str[16];  
  strncpy(str,s,16);  
  system("pause");  
  return   0;  
  }  
  Top

4 楼du51(郁郁思扬)回复于 2005-04-01 23:45:03 得分 0

楼上超强.呵呵.Top

5 楼pcboyxhy(-273.15℃)回复于 2005-04-02 00:14:25 得分 0

如果是字符串  
  后面加'\0'处理会有很多优势。Top

6 楼xxxdg(学习中)回复于 2005-04-02 00:57:36 得分 0

考虑到连续的字符及重复  
   
  定义:第一字节表示起始字符,第二字节表示终止字符,第三字母起始字符,第四字节表示终止字符,  
  第五表示重复次数,第六字节为0  
  如果有别的连续字符,可以利用其它字节再考虑上述方法.  
   
  void   main()  
  {  
          str[0]='0';  
          str[1]='9';  
          str[2]='A';  
          str[3]='F';  
          str[4]=2;     //   重复两次  
          int   i;  
          char   c;  
          for(i=0;i<str[4];i++)  
          {  
                for(c=str[0];c<=str[1];c++)  
                          cout<<c<<endl;  
                for(c=str[2];c<=str[3];c++)  
                          cout<<c<<endl;  
          }  
   
  }  
  Top

7 楼021850524(吸血鬼牌卫生巾)回复于 2005-04-02 08:54:46 得分 0

strncpy(str,s,16);//这句可能会有些小问题.  
  strncpy(str,   s,   n);是只拷贝n-1个字符,然后把第n个字符置0.  
  相对strcpy来说要安全.Top

8 楼FreeFice(庄鱼)回复于 2005-04-02 11:33:46 得分 0

#include   <iostream.h>  
  class   Buf{  
      int   n;  
      char   str[16];  
  public:  
      Buf(char   *s=0,int   Len=0);  
      char   *GetStr(char   *s);  
      void   SetStr(char   *s,int   len);  
  };  
  Buf::Buf(char   *s,int   len)  
  {  
        n   =   len>16?16:len;  
        for(int   i=0;i<n;i++)  
            str[i]   =   s[i];  
  }  
  char   *Buf::GetStr(char   *s)  
  {  
        for(int   i=0;i<n;i++)  
            s[i]   =   str[i];  
        s[n]   =   '\0';  
        return   s;  
  }  
  void   Buf::SetStr(char   *s,int   len)  
  {  
        n   =   len>16?16:len;  
        for(int   i=0;i<n;i++)  
            str[i]   =   s[i];  
  }  
   
  int   main()  
  {  
        char   *s   =   "0123456789ABCDEF0123456789ABCDEF";  
        char   str[80];  
        Buf   buf(s,16);  
        cout   <<   buf.GetStr(str)<<endl;  
        return   0;  
  }  
  原则上,如果没有额外变量进行参与约束的话,很可能导致指针跑飞的现象,这是c/c++标准运行库源码的一个弊端,这也是建议使用string代替char*的一个主要原因。Top

9 楼FreeFice(庄鱼)回复于 2005-04-02 11:47:44 得分 0

to:   flying_dancing()   、   kobefly(科比---开始学习c++!)    
  麻烦你们将源字符串扩充到"0123456789ABCDEF0123456789ABCDEF"好吗?你们会发现现实与想象会有多么大的不同!Top

10 楼ltc_mouse(野地芳菲)回复于 2005-04-02 13:04:37 得分 0

不清楚楼主的“型如”是什么意思。从字符串特点分析,每个字符数值在0~F,用4Bits存储即可,于是楼主给出的32个字符可以存储在16个字节中。  
   
  例如:   str[0]   =   0x01  
                str[1]   =   0x23  
                str[2]   =   0x45                     //此即用3个字节存储了“012345”6个字符Top

11 楼scriptren(路是慢慢走出来的......)回复于 2005-04-02 15:18:27 得分 0

用strcpy(ctr,"123456789abcdef")函数不就行了吗?Top

12 楼crcr(游侠)回复于 2005-04-02 17:04:40 得分 0

include   <iostream>  
  #include   <string>  
  using   namespace   std;  
  int   main()  
  {  
  char   *s="0123456789abcdef";  
  char   ctr[16];  
  strcpy(ctr,s);  
  cout<<ctr<<endl;  
  system("pause");  
  return   0;  
  }  
  Top

13 楼tgz501(长夜雨亭)回复于 2005-04-02 17:33:59 得分 0

main()  
  {  
  char   *s="0123456789abcdef";  
  char   str[16];  
  strcpy(ctr,s);  
  printf("%s",str);  
   
  }Top

14 楼FreeFice(庄鱼)回复于 2005-04-02 19:47:16 得分 0

ltc_mouse(野地芳菲)   提示得好,楼主该不会要求将16进制字符串改写成字符串吧!  
  char   *source   =   "0123456789abcdef0123456789abcdef";  
  char   c;  
  for(int   i=0,j=0;i<16;i++,j++){  
      switch(source[j]){  
          case   '0':case   '1':...case   '9':c   =   source[j]-'0';break;  
          case   'a':...case   'f':   c   =   source[j]-'a'+10;break;  
          case   'A':...case   'F':   c   =   source[j]-'A'+10;break;}  
      c<<=4;j++;  
      switch(source[j]){  
          case   '0':case   '1':...case   '9':c   +=   source[j]-'0';break;  
          case   'a':...case   'f':   c   +=   source[j]-'a'+10;break;  
          case   'A':...case   'F':   c   +=   source[j]-'A'+10;break;}  
      str[i]   =   c;}Top

15 楼mikelearner(初学者)回复于 2005-04-02 20:48:31 得分 0

ltc_mouse(野地芳菲)   说的对,我这个是用到把IPV6的字符串和unit8   str[16]的互转.  
  应该要用到位操作.Top

相关问题

  • 关于字符串拷贝
  • 怎么样把UNICODE 字符串转化成 ANSI 字符串
  • 怎么样取一个字符串的取子字符串??
  • 字符串的拷贝问题
  • 怎样实现字符串拷贝?
  • 字符串拷贝,高分送!!
  • 请问怎么样连接字符串?
  • 怎么样加密字符串啊?
  • 怎么样比较字符串呢?
  • 怎么样快速拼合字符串

关键词

  • 字符
  • abcdef
  • 字符串
  • ctr
  • unit8
  • len
  • buf
  • str
  • namespace std
  • 表示

得分解答快速导航

  • 帖主:mikelearner

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo