#include<stdio.h>
#include<assert.h>
//左数第bit位置1
bool Setbit1(char *p,int bit)
{
if(bit <= 0||bit >sizeof(char)*8)
{
return false;
}
*p = *p | (1 << (sizeof(char)*8 - bit)) ;
return true;
}
//左数第bit位置0
bool clearBit(char *p,int bit)
{
if(bit <= 0||bit >sizeof(char)*8)
{
return false;
}
*p = *p & ~(1 << (sizeof(char)*8 - bit));
return true;
}
//获取第bit位的值
bool getBit(char *p,int bit)
{
if(bit <= 0||bit >sizeof(char)*8)
{
return false;
}
return (*p >> (sizeof(char)*8 - bit) & 1);
}
//提取子字符串
int substr(char str1[],char str2[],int start,int len)
{
assert(str1 != NULL);
int len1 = strlen(str1);
int j = 0;
if(start > 0 && start < len1 && len > 0)
{
int tmp = 0;
while(start < len1)
{
str2[j] = str1[start];
j++;
start++;
tmp++;
}
str2[j++] = '\0';
tmp++;
return tmp;
}
else
{
return 0;
}
}
int main()
{
char str1[]= "hello world";
char str2[20] = {};
printf("%s\n",str2);
printf("%d\n",substr(str1,str2,3,5));
return 0;
}
// 消除多余空格
int DelSpace(char *str)
{
assert(str != NULL);
char *p = str;
while(*str == ' ')
{
str++;
}
while(*str != '\0')
{
while(*str == ' '&& *(str+1) == ' ')
{
str++;
}
*p++ = *str++;
}
str--;
if(*str == ' ')//判断\0前一个是否是空格
{
--p;
//*p = '\0';
//return;
}
*p = '\0';
return *str;
}
int main()
{
char str[] = " nd s nkj";
char str2[] = " nd s nk j";
DelSpace(str);
DelSpace(str2);
//printf("%s",str);
printf("%s",str2);
//char val = 3;
//Setbit1(&val,6);
//printf("%d\n", Setbit1(&val,6));
return 0;
}