大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C语言中的字符串截取函数

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

关键词:截取字符串c语言  阅读(942) 赞(18)

[摘要]本文是对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();  
    }  


相关评论