这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » C语言中的字符串截取函数

共6条 1/1 1 跳转至

C语言中的字符串截取函数

专家
2014-03-15 23:45:30     打赏
C语言中的字符串截取函数及应用
/*========================================================
子数整数
源程序名 num.??? (pas,c,cpp)
可执行文件名 num.exe
输入文件名 num.in
输出文件名 num.out
对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数20207可以拆分成
sub1=202
sub2=020(=20)
sub3=207
现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,
条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。
输入
输入由键盘输入,输入仅一行,为正整数K(0<K<1000)。
输出
输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。
不得重复输出或遗漏。如果无解,则输出“No”。
样例
num.in
15
num.out
22555
25555
28555
30000
==========================================================*
#include <stdio.h>
#include <string.h>
char * left(char *dst,char *src, int n)
{
    char *p = src;
    char *q = dst;
    int len = strlen(src);
    if(n>len) n = len;
     
    while(n--) *(q++) = *(p++);
    *(q++)='\0';
    return dst;
}
char * mid(char *dst,char *src, int n,int m)
{
    char *p = src;
    char *q = dst;
    int len = strlen(src);
    if(n>len) n = len-m;  
    if(m<0) m=0;  
    if(m>len) return NULL;
    p += m;
    while(n--) *(q++) = *(p++);
    *(q++)='\0';
    return dst;
}
char * right(char *dst,char *src, int n)
{
    char *p = src;
    char *q = dst;
    int len = strlen(src);
    if(n>len) n = len;
    p += (len-n); 
    while(*(q++) = *(p++));
    return dst;
}
void main()
{
    FILE * p;
    int i,k,outi,count=0;
    int sub1,sub2,sub3;
    char *strsub1,*strsub2,*strsub3,*strtempnum,*a,*b,*c;
    if((p = fopen("num.out", "ab+")) == NULL)
    {
        printf("open file fail!");
        getch();
        exit();
    }
    printf("Please input int number(0<K<1000):");
    scanf("%d",&k);
    for(outi=10000;outi<=30000;outi++)
    {
        itoa(outi,strtempnum,10);
        left(strsub1,strtempnum,3);
        mid(strsub2,strtempnum,3,1);
        right(strsub3,strtempnum,3);
        sub1=atoi(strsub1);
        sub2=atoi(strsub2);
        sub3=atoi(strsub3);   
        if((sub1%k)==0 && (sub2%k)==0 && (sub3%k)==0)
        {
            fprintf(p,"%d\n",outi);
            count++;
            printf("outi=%d\n",outi);
        }
        else
        {
            fprintf(p,"%s\n","NO");
        }
    }
    printf("Count=%d    OK",count);
    fclose(p);
    getch();
}

 

 

 

转自网友无知者无畏




关键词: 字符串     截取     函数    

专家
2014-03-16 00:14:30     打赏
2楼

c中strncpy也可以实现这个功能

char *strncpy(char *dest, char *src, int n);

strncpy( strtemp,str+n , m )

--strtemp字符串变量,截取后的字符串存放处

--str 字符串变量,要截取的字符串

--n ,int 型,

-- str+n, 表示从第n 位开始截取字符串

--m,int型,表示截取m


院士
2014-03-16 00:51:05     打赏
3楼
看来大家对于C语言的学习热情越来越强烈了~~

院士
2014-03-16 10:17:20     打赏
4楼
启动C语言培训计划?

专家
2014-03-17 15:36:35     打赏
5楼
带*的函数,灵活运用就是大师了

高工
2014-03-18 22:50:09     打赏
6楼
指针就是C的精华

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]