免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8075 | 回复: 11
打印 上一主题 下一主题

请问大家,如何把字符串中指定的字符拷贝到另外一个数组中————??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-20 17:03 |只看该作者 |倒序浏览
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>           
char Byte[]="CS][PS,CS,44][PS,";
char command[]="";
int main()
{
     for(int t=0;t<=sizeof(Byte);t++)
        {
            
        if(Byte[t]=='[')
         {
            int i=0;
            command[i]=Byte[t];
         i++;
         }
         }
puts(command);
int c;
c=getchar();
}


为什么我的结果只有一个[被拷贝了呢?

论坛徽章:
0
2 [报告]
发表于 2006-10-20 17:11 |只看该作者
strtok

论坛徽章:
0
3 [报告]
发表于 2006-10-20 17:15 |只看该作者
  1. if(Byte[t]=='[')
  2.          {
  3.             int i=0;         command[i]=Byte[t];
  4.          i++;
  5.          }
复制代码

把int i=0放在for循环前面

论坛徽章:
0
4 [报告]
发表于 2006-10-20 17:20 |只看该作者
原帖由 crny 于 2006-10-20 17:03 发表
for(int t=0;t<=sizeof(Byte);t++)
        {
            
        if(Byte[t]=='[')
         {
            int i=0;
            command=Byte[t];
         i++;
         }
         }


每次i都是0,当然只有1个被操作。。。

论坛徽章:
0
5 [报告]
发表于 2006-10-20 17:40 |只看该作者
command[i]=Byte[t];

论坛徽章:
0
6 [报告]
发表于 2006-10-20 17:42 |只看该作者
修改如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>



char Byte[]="CS][PS,CS,44][PS,";
char command[] = "";
int main()
{
    int i=0;
     for(int t=0; t < sizeof(Byte); t++)
     {      
        if(Byte[t]=='[')
         {

            command[i]=Byte[t];
            //command[i+1]= 0;
            i++;
         }
     }
puts(command);
int c;
c=getchar();
}

结果是对的,但command[i+1]= 0;这一句一定要加吗?

论坛徽章:
0
7 [报告]
发表于 2006-10-20 17:45 |只看该作者
还有我把t < sizeof(Byte)改<=为什么会出现三次[?

论坛徽章:
0
8 [报告]
发表于 2006-10-20 18:03 |只看该作者
#include <stdio.h>
#include <string.h>
#include <stdlib.h>



char Byte[]="CS][PS,CS,44][PS,";
char command[] = "";

void execute(char check[]){

     int i=0;
     for(int t=0; t < strlen(check); t++)
     {      
        if(check[t]=='[')
         {         
            command[i]=check[t];
            command[i+1]= 0;
            i++;
         }
     }
     puts(command);
}

int main()
{
    execute(Byte);

}



我改成调用函数,为什么在函数里,用sizeof就不行,而用strlen就可以呢??

论坛徽章:
0
9 [报告]
发表于 2006-10-20 18:11 |只看该作者

回复 7楼 crny 的帖子

因为Byte[] 和 command[] 的内存是连续分配.
所以 Byte[sizeof(Byte)] 的内容是command[0]的内容.

Byte[sizeof(Byte)]  已经数组越阶了.

论坛徽章:
0
10 [报告]
发表于 2006-10-20 18:16 |只看该作者

回复 8楼 crny 的帖子

你这里传进函数里的是指针.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP