| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12865 人关注过本帖
标题:从一个字符串中提取子字符串的问题
取消只看楼主 加入收藏
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
收藏
已结贴  问题点数:20 回复次数:1 
从一个字符串中提取子字符串的问题
#include<stdio.h>
#include<stdlib.h>
/*
 从一个字符串中提取它的子字符串,但是提取的长度不是有原字符串的长度决定而是由len(它的值非nul字符)的值决定的,不知道咋回事当len的值大于原字符串的长度 时它输出完最后一个字符时没有停止,而继续从原字符串第一个字符继续输出,直到len的值为0
*/
int substr(char dst[],char src[],int start,int len)//start为开始复制时的位置
{
    int src_index,dst_index;
    dst_index=0;
    while(len>0&&start>=0)
    {
        for(src_index=0;src_index<start&&src[src_index]!='\0';src_index++);
        while(len>0&&src[src_index]!='\0')/*为什么src[src_index]结束时还继续复制呢?*/
        {
            dst[dst_index]=src[src_index];
            src_index++;
            dst_index++;
            len--;
        }
        
    }
    dst[dst_index]='\0';
    return dst_index;

}
int main()
{
    char str1[20];
    char str2[20];
    int len,start;
    int Len;
    printf("please input the str1\n");
    scanf("%s",str1);
    printf("enter the values:\n");
    scanf("%d%d",&start,&len);
    Len=substr(str2,str1,start,len);
    printf("the len of str2 is %d\n",Len);
    puts(str2);
    putchar(10);
    return EXIT_SUCCESS;


}

遇到的问题:  不知道咋回事,遇到的问题已经标注出来了,大家给看下吧
搜索更多相关主题的帖子: start 字符串 include 
2012-11-03 09:59
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
我看了下,是因为 while(len>0&&start>=0)
的原因,如果是if(len>0&&start>=0)的话,便可以正常运行了,这个问题以前没有注意过,今天把它给弄清楚了,if是条件控制语句,它只运行一次,而while是循环控制语句,当我选择while(len>0&&start>=0)时就已经错了。想要的效果就是运行一次。呵呵,以后再用if和while的时候可不敢那么随意了。


重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-03 15:11
快速回复:从一个字符串中提取子字符串的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041426 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved