华为嵌入式软件开发笔试题:
在一字符串中使用****隐藏敏感字符?
#include "stdio.h"
int main()
{
int i=0, j=0,YS_LEN,MG_LEN,k=0,L=0,M=0,BZ;
/* BZ为标记位,YS_LEN为待隐藏字符串,MG_LEN为敏感字符,L为待隐藏字符串指针,k为敏感字符串指针 */
char a[1000];
char b[1000];
//*****************************************输入
printf("请输入:");
scanf_s("%c", &a[i]);
while (a[i] != '#')
{
i++;
scanf_s("%c", &a[i]);
}
YS_LEN = i;
printf("请输入:");
scanf_s("%c", &b[j]);
while (b[j] !='#')
{
j++;
scanf_s("%c", &b[j]);
}
MG_LEN = j-1;
//测试用的输出
printf("b[0]=%c\n", b[1]);
printf("MG_LEN=%d\n", MG_LEN);
printf("YS_LEN=%d\n", YS_LEN);
//*********************************************处理
while (L <= YS_LEN - MG_LEN )
{
while (a[L]!= b[1]&& L <= YS_LEN - MG_LEN)//**
{
L++;
printf(" L=%d ", L);
printf(" a[L]=%d ", a[L]);
printf(" b[0]=%d\n", b[1]);
}
BZ = L;
printf(" BZ=%d\n", BZ);
k = 1;
//测试用的输出
printf(" b[k]=%d\n", b[k]);
printf(" a[L]=%d\n", a[L]);
printf("MG_LEN=%d\n", MG_LEN);
while (a[L] == b[k] && k <= MG_LEN )
{
k++;
L++;
//测试用的输出
printf(" b[k]=%d\n", b[k]);
printf(" a[L]=%d\n", a[L]);
printf("MG_LEN=%d\n", MG_LEN);
}
//测试用的输出
printf("k=%d\n", k);
printf("MG_LEN=%d\n", MG_LEN);
if (k ==MG_LEN+1)
{
for (i = 0; i < MG_LEN; i++)
{
a[i + BZ] = '*';
}
k = 1;
L = BZ + MG_LEN;
}
else
{
k = 1;
L = BZ + 1;
}
}
for (i = 0; i < YS_LEN; i++)
{
printf("%c", a[i]);
}
//测试用的输出
printf("\n");
printf("打印b");
for (i = 1; i <= MG_LEN; i++)
{
printf("%c", b[i]);
}
return 0;
}