| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1424 人关注过本帖
标题:关于指定字符串截取的截取.
只看楼主 加入收藏
逍风
Rank: 2
来 自:中国 江西
等 级:论坛游民
帖 子:88
专家分:84
注 册:2015-3-7
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:7 
关于指定字符串截取的截取.
关于指定字符串截取的截取,写到了后面,实在没了思路,小弟愚昧,求赐教!
程序代码:
/* 指定字符串截取程序 */
#include <stdio.h>
#include <string.h>
#include <windows.h>
char String_cut(char source_str[],int l,int s);
void main()
{
    char Str[20];
    int l,s;
    system("title 指定字符串截取程序!\n");
    printf("请输入一段字符:");
    scanf("%s",Str);
    printf("请再输入字符的起始值和终止值(如1 5):");
    scanf("%d%d",&l,&s);
    printf("截取后的字符串:%s\n", String_cut(Str,l,s));
    system("pause");
}
char String_cut(char source_str[],int l,int s)//指定字符串截取函数
{
   
    {
       printf("原字符串:%s\n",source_str);
       printf("字符串起始值和终止值:%d-%d\n",l,s);
    }
    /*以上两句作为测试使用*/
    return 0;   
}

求大神赐教!
搜索更多相关主题的帖子: 字符串 
2015-03-20 15:21
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:1 
记得在哪看到过个代码,不过这种截取,有函数直接可以调用。代码放出来供参考。
希望对你有点帮助
程序代码:
#include<stdio.h>
void midstr(char *dp,char *sp,int s,int l)
{//字符串截取,将字符串sp截取位置s,长度l的字符串到dp中,不检查字符数组的长度
    int i;
    s=s-1;
    if(s>=0&&l>0)
    {
         for(i=s;i<s+l&&sp[i]!=0;i++)
         {
            dp[i-s]=sp[i];
         }
         dp[i-s]=0;
    }
    else
         dp[0]=0;
}
void main()
{
     char s[]="362531194901010331",d[18]={0};
     midstr(d,s,7,4);
     printf("year:%s\n",d);
}
结果:year:1949

授人以鱼,不如授人以渔
2015-03-20 15:33
逍风
Rank: 2
来 自:中国 江西
等 级:论坛游民
帖 子:88
专家分:84
注 册:2015-3-7
收藏
得分:0 
回复 2楼 执笔画江山
嗯 谢谢! 这个我会认真研究 另外 我想实现的是 如何把成功截取指定部分的字符串后 用返回值的方式 返回它? 这是个问题 我还需要去思考 .

<%谦虚学习,用心做人,没有最好,只有更好!%>
2015-03-20 15:46
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <string.h>

#define MAXLEN 20

char * foo(char *, unsigned, unsigned);
int main(void) {
    char str[MAXLEN] = {0}, *p = str;
    unsigned from = 0, to = 0;
    printf("请输入一段字符:");
    fgets(str, MAXLEN, stdin);
    printf("请再输入字符的起始值和终止值(如1 5):");

    if((scanf("%d%d", &from, &to)) == 2 &&
            from >= 1 && to >= from && to <= MAXLEN) {
        p = foo(p, from, to);
        fputs(p, stdout);
        puts("");

    } else return 1;

    return 0;
}

char * foo(char *str, unsigned from, unsigned to) {
    char *p = str;
    *(p + to) = '\0';
    p = str + from - 1;
    
    return p;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-20 15:59
lovegh
Rank: 5Rank: 5
来 自:图灵学院
等 级:职业侠客
威 望:3
帖 子:117
专家分:311
注 册:2015-1-23
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
// 截取src字符串,截取开始位置为s(从零开始计算)
// 截取长度为len
char * substring(char *src, int s, int len);
int main() {
    
    char *p = "fuck c language";
    char *buf =  NULL;
    // 截取索引为1,开始的2个字符 
    buf = substring(p, 1, 2);
    printf("%s", buf);
    
    // 记得释放内存。 
    free(buf); 
    return 0;
}

char * substring(char *src, int s, int len) {
    int src_size = strlen(src) + 1;
    char * buf = (char*)malloc(src_size);
    if (!buf) { return NULL; }
    // strncpy不会给你自动补上结束符号,要注意 
    strncpy(buf, src + s, len);
    buf[len] = 0;
    return buf;
}

别老是写代码,要多陪妹子,多了解老婆大人,血淋淋的教训。
2015-03-20 16:01
逍风
Rank: 2
来 自:中国 江西
等 级:论坛游民
帖 子:88
专家分:84
注 册:2015-3-7
收藏
得分:0 
谢谢你们 关于指针的知识 我虽说还是不怎么懂 但同样学习了 .

<%谦虚学习,用心做人,没有最好,只有更好!%>
2015-03-20 18:06
逍风
Rank: 2
来 自:中国 江西
等 级:论坛游民
帖 子:88
专家分:84
注 册:2015-3-7
收藏
得分:0 
谢谢你们的帮助 这个程序终于顺序完成 后期的工作 你们帮了我大忙 !
程序代码:
/* 指定字符串截取程序 */
#include <stdio.h>
#include <string.h>
#include <windows.h>
char *String_cut(char *src, int s, int len);//指定字符串截取函数
void main()
{
    char Str[20];
    int l,s;
    char *MY_CUT_STR=NULL;//截取后的字符串 .
    system("title 指定字符串截取程序!\n");
    printf("请输入一段字符:");
    scanf("%s",Str);
    printf("请再输入字符的起始值和终止值(如1 5):");
    scanf("%d%d",&l,&s);
    MY_CUT_STR=String_cut(Str,l,s);
    printf("截取后的字符串:%s\n",MY_CUT_STR);
    free(MY_CUT_STR);//释放“MY_CUT_STR” 它的内存 .
    system("pause");
}
char *String_cut(char *src, int s, int len) {
    int src_size = strlen(src) + 1;
    char *Cut_string = (char*)malloc(src_size);
    if (!Cut_string){ return NULL; } 
    strncpy(Cut_string, src + s, len);// strncpy不会给你自动补上结束符号,要注意
    Cut_string[len] = 0;
    return Cut_string;//返回成功截取的" Cut_string" 的值 ;
}

<%谦虚学习,用心做人,没有最好,只有更好!%>
2015-03-20 19:20
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:7 
程序代码:
# include <stdio.h>
# include <malloc.h>
# define SIZE 31
char*StringCut(char*start,int a,int b); //声明 
int main(int argc,char*argv[])
{   
     int a,b;  //标记截取起始 
     char str[SIZE]=" ";
     printf("请输入字符串(%d个字符以内)\n",SIZE);
     gets(str);
     
     printf("请输入截取起始位置\n");
     
     while(2!=scanf("%d %d",&a,&b) || a>b )
     {
         printf("请正确输入\n");
         fflush(stdin);
     }  
         
    puts(StringCut(str,a,b));
    return 0;
}

char*StringCut(char*start,int a,int b)
{
    char*final=(char*)malloc(sizeof(char)*(b-a+2)) ; //a+b+1是有效字符个数 
    int i; 
    for( i=0;i<b-a+1;i++)
     *(final+i)=*(start+a-1+i);  //把截取部分赋值给final 
      *(final+i)='\0';
     return final;    //返回final地址 
    
}

你醒了?快起来敲代码!!
2015-03-20 19:44
快速回复:关于指定字符串截取的截取.
数据加载中...
 
   



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

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