实验一:
#define YES 1
#define NO 0
/*htoi:convert hexadecimal string s to integer*/
int htoi(char s[])
{
int hexdigit,i,j,inhex,n;
i=0;
if(s[i]=='0'){ //skip optional 0x or 0X
++i;
if(s[i]=='x'||s[i]=='X')
++i;
}
n=0; //intager value to be returned
inhex=YES; //assume valid hexadecimal digit
for(;inhex==YES;++i){
if(s[i]>='0'&&s[i]<='f')
hexdigit=s[i]-'0';
else if(s[i]>='a'&&s[i]<='f')
hexdigit=s[i]-'a'+10;
else if(s[i]>='A'&&s[i]<='F')
hexdigit=s[i]-'A'+10;
else
inhex=NO; //not a valid hexadecimal digit
if(inhex==YES)
n=16*n+hexdigit;
}
return n;
}
把十六进制的字符串转换为与之等价的整型值.
实验二:
函数squeeze(s1,s2), 将字符串s1中任何与字符串s2中字符匹配的字符都删除。
/*squeeze:delete each char in s1 which is in s2*/
void squeeze(char s1[],char s2[])
{
int i,j,k;
for(i=k=0;s1[i]!='/0';i++){
for(j=0;s2[j]!='/0'&&s2[j]!=s1[i];j++)
;
if(s2[j]=='/0') //end of string - no match
s1[k++]=s1[i];
}
s1[k]='/0';
}
实验三:
/*any:return first location in s1 where any char from s2 occurs*/
Int any(char s1[],char s2[])
{
int i,j;
for(i=0;s1[i]!=‘/0’;i++)
for(j=0;s2[j]!= ‘/0’;j++)
if(s1[i]= =s2[j]) //match found?
Return i; //location first match
return -1; //otherwise,no match
}