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

字符串拷贝,高分送!!

楼主marxixing(天蝎)2005-04-03 16:16:45 在 VC/MFC / 基础类 提问

char   szNameString={"aa   ss   dd   ff"};  
  char   *szName[3]={0};  
  我要把第一行里面的字符串拷贝到第二行的数组里面,最后结果是  
  szName[0]={"aa"};  
  szName[1]={"ss"};  
  szName[2]={"dd"};  
  szName[3]={"ff"};  
  就是忽略其中的空格,把其他的字符串放到另外一个数组里面,怎么办? 问题点数:80、回复次数:14Top

1 楼ybt631(默默耕耘!)回复于 2005-04-03 16:20:43 得分 0

数组大小为3,怎末出来了4个元素??Top

2 楼windowssky()回复于 2005-04-03 16:31:51 得分 0

1  
  char   szNameString={"aa   ss   dd   ff"};//这个我看不懂,第一次看到这种写法  
   
  2   自己写个算法步骤:  
      遍历szNmaeString   把空格去掉,去掉的同时记录空格位置,放在数组中  
      然后读szNmaeString中的字符(现在没有空格了),读取字符,和数组的位置比较就行了  
           
  Top

3 楼AthlonxpX86(一坨屎)回复于 2005-04-03 16:33:11 得分 0

数组大小为3,怎末出来了4个元素??  
  //////////////////  
  不但如此,每个单位居然能存两个字节,真搞不懂Top

4 楼windowssky()回复于 2005-04-03 16:38:42 得分 0

还有怎么能这样表示呢??  
  szName[0]={"aa"};                               --》szName[0]="aa";  
  szName[1]={"ss"};  
  szName[2]={"dd"};  
  szName[3]={"ff"};  
  Top

5 楼woodwoodwood3()回复于 2005-04-03 17:06:50 得分 10

这是很基本的操作,也许这样就可以吧:(没有测试,也许会有错)  
  char   *szNameString="aa   ss   dd   ff";  
  char   *szName;  
   
  int   len=strlen(szNameString);  
  szName=(char*)calloc(   len,   sizeof(char));  
  char   m_c=0x00;  
  int   start=0;  
  int   index=0;  
   
  for   (int   i=0;i<len;i++)  
  {  
        m_c=*(szNameString+i);  
        if   (m_c==0x20)  
        {              
              strncpy(szName+index,szNameString+start,i-start);  
              index++;  
              start=i+1;  
        }      
  }Top

6 楼keiy()回复于 2005-04-03 17:33:26 得分 50

用我最爱用的strtok  
  #include   <stdio.h>  
  #include   <string.h>  
  void   main()  
  {  
  char   szNameString[]={"aa   ss   dd   ff"};  
  char   *szName[4]={0};  
  char   *token;  
  int   i;  
  i=0;  
  //   以下,szName只是指向原szNameString,没有拷贝  
  //如果用拷贝,只要先申请内存,然后用strcpy  
      token   =   strtok(   szNameString,   "   "   );  
        while(   token   !=   NULL   )  
        {  
              szName[i++]=token   ;  
              token   =   strtok(   NULL,   "   ");  
        }  
    //输出      
    for(i=0;i<4;i++)  
        printf("szName[%d]=%s\n"   ,i   ,szName[i]);  
  }  
   
  Top

7 楼marxixing(天蝎)回复于 2005-04-04 10:55:26 得分 0

楼上高人啊,真是惭愧,我第一次用strtok函数。可不可以教个朋友?我的邮箱marxixing@tom.comTop

8 楼Aerith(艾莉斯)回复于 2005-04-04 11:27:08 得分 0

strtok,不错啊,又学了一招~~  
  谢谢keiy()Top

9 楼xuzheng318(忧郁王子)回复于 2005-04-04 11:29:29 得分 0

帮楼主顶!Top

10 楼bobob(静思)回复于 2005-04-04 11:34:56 得分 0

CString   s="aaa   bbb   ccc   ddd";  
  char   a1[4],a2[4],a3[4],a4[4];  
  sscanf(s,"%[^   ]   %[^   ]   %[^   ]   %[^   ]",a1,a2,a3,a4);  
  AfxMessageBox(a4);Top

11 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 12:11:21 得分 0

或直接查找空格,然后截取Top

12 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 12:11:25 得分 0

或直接查找空格,然后截取Top

13 楼xqk(夏乾坤)回复于 2005-04-04 12:30:12 得分 10

这个问题很简单的嘛,用标准C函数不就行了嘛  
   
  char   szNameString={"aa   ss   dd   ff"};  
  char   *szName[3]={0};  
   
  memset(szName,'\0',3);  
  strncpy(szNameString,szName,2);           //szName   is   "aa"  
  memset(szName,'\0',3);  
  strncpy(szNameString+3,szName,2);           //szName   is   "ss"  
  memset(szName,'\0',3);  
  strncpy(szNameString,szName+6,2);           //szName   is   "dd"  
   
  Top

14 楼qrlvls( 空 气 )回复于 2005-04-04 12:47:30 得分 10

首先有一个问题:szName是指针数组,保留空间为0  
  另外一个问题:szName只有三个,而你却用了4个  
  可以这样做  
  char   szName[4][_MAXPATH];  
   
  _stscanf(szNameString,   _T("%s   %s   %s   %s"),   szName[0],   szName[1],   szName[2],   szName[3]);Top

相关问题

  • 关于字符串拷贝
  • 高手请进:如何在ASP中分割这一字符串?(100分送)
  • 字符串问题。100分送上
  • !!!大虾们:怎样调用DLL文件中的字符串资源?高分送上!
  • 字符串的拷贝问题
  • 怎样实现字符串拷贝?
  • 小问题,送分,送完为止?(字符串结束符)
  • 简单问题,怎么打印字符串,100分送!
  • 从字符串数组 a[]=new char[20] 拷贝字符串到 b[] = new char[10] 怎么拷贝?
  • 请问在BCB中如何实现字符串拷贝?

关键词

  • 拷贝
  • szname
  • sznamestring
  • 字符串
  • 数组
  • 空格
  • aa
  • ss dd ff
  • token
  • char

得分解答快速导航

  • 帖主:marxixing
  • woodwoodwood3
  • keiy
  • xqk
  • qrlvls

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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