C语言中的字符串截取函数
时间:2023-01-21 00:30:00
C语言中的字符串截取函数和应用
/*========================================================
子数整数
源程序名 num??? (pas,c,cpp)
可执行文件名 num.exe
输入文件名 num.in
输出文件名 num.out
五位数a1a2a3a4a5.可分为三个子数:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,5位数20207可以分割成
sub1=202
sub2=020(=20)
sub3=207
现在给定一个正整数K,要求您在10000到30000之间编程所有满足以下条件的五位数,
条件是这些五位数的三个子数sub1,sub2,sub3都可以被K整除。
输入
输入由键盘输入,只输入一行,为正整数K(0
输出
输出到文件,输出文件的每一个行为都是满足条件的五位数,需要从小到大输出。
不得重复输出或遗漏。如果没有解决方案,则输出No”。
样例
num.in
15
num.out
22555
25555
28555
30000
==========================================================*
#include
#include
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
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=%dOK",count);
fclose(p);
getch();
}