我想求教段代码!谢谢!!
对于一个里面含有数字字符的字符串(长度小于200),现在将连续的数字字符组成的整数转化为16进制输出。#include<stdio.h>
#include<string.h>
int f(char c)
{
if(c>='0'&&c<='9')
return 1;
else
return 0;
}
int y(long long int n)(这是16进制的转换,我还是明白了的)
{
int i,k,b[201];
if(n!=0)
{
k=0;
while(n>0)
{
b[k++]=n%16;
n=n/16;
}
for(i=k-1;i>=0;i--)
printf("%c", b[i]/10>0 ? b[i]-10+'A': b[i]+'0');
printf("\n");
}
else
printf("0\n");
}
int main()
{
char s[201];
long long int i,j,a[201],len;
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
int k=0;
long long int g=0;
for(i=0;i<len;i++)
{
if(f(s[i])==1)
g=g*10+(s[i]-'0');
if(i==len||f(s[i])==1&&f(s[i+1])==0)(就是这里对字符串的筛选我就是不懂。i明明是<len的,为何这if语句?)
{
a[k++]=g;
g=0;
}
}
for(i=0;i<k;i++)
y(a[i]);
}
return 0;
}