重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
typedef unsigned char BYTE8;
松北ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
void setbit(BYTE8 bits[], int index)
{
int a = index3;/*计算字节数*/
int b = index7;/*计算字节内的位数*/
BYTE8 mask=0x80;/*第一位是1的掩码*/
bits[a] |= (maskb);
}
PS:顺便写个取得某一个位是0还是1的函数。
int getbit(BYTE8 bits[], int index)
{
int a = index3;/*计算字节数*/
int b = index7;/*计算字节内的位数*/
BYTE8 mask=0x80;/*第一位是1的掩码*/
return (bits[a] (maskb))!=0;
}
这样:
#includestdio.h
// 计算字符串长度
int len(char a[])
{
int temp=0,i;
for(i=0;a[i]!='\0';i++)
temp++;
return temp;
}
// 获取子串在源串中首次出现的位置索引
int index(char a[], char b[])
{
int i,j,temp;
for(i=0;ilen(a)-len(b);i++)
{
temp=i;
j=0;
while(j=len(b) a[temp]==b[j])
{
temp++;
j++;
}
if(j==len(b))
return i;
}
return -1;//返回-1则没找到指定的子串,否则找到
}
void main()
{
char a[]="hello";
a[len(a)]=' ';//算法改进,在数组a的末尾新增一个空的元素,这样才能hello中找到hello
printf("%d\n",index(a,"llo"));
}
扩展资料:
注意事项
头文件:#include string.h
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
参数:str 为要查找的字符串,c 为要查找的字符。
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
返回值:如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
实例:查找字符5首次出现的位置。
#include stdio.h
#include stdlib.h
#include string.h
int main(){
char *s = "0123456789012345678901234567890";
char *p;
p = strchr(s, '5');
printf("%ld\n", s);
printf("%ld\n", p);
system("pause");
return 0;
}
输出结果:
12016464
12016469
C 实现:
#include stdio.h
void getNext(char pat[], int next[])
{
int j = 0;
int k = -1;
next[0] = -1;
while (pat[j])
{
if ( k == -1 || pat[j] == pat[k])
{
j++;
k++;
next[j] = k;
}
else
{
k = next[k];
}
}
}
int index(char str[], char dest[])
{
int i = 0;
int j = 0;
int next[255];
getNext(dest, next);
while (str[i])
{
if (dest[j] == '\0')
{
return (i - j+1);
}
if (str[i] == dest[j])
{
i++;
j++;
continue;
}
i += next[j+1]+1;
}
if (dest[j] == '\0')
{
return (i - j+1);
}
return 0;
}
1.char *index(char *str,char ch)
{char *p;
for(p=str;*p!='\0';p++)
if(*p==ch) break;
if(*p=='\0') p=0;
return (p);
}
char *index(char *str,char ch)
{
char *p ;
for (p = str; *p != '\0'; p++)
{
if (*p == 'ch') { return p;}
}
else
return NULL;
}