写一个程序处理字符串A,处理规则是: 只要字符串B里面有的字符,不论大小写,一律从A字符串中删除
A-->"Hello!KuGo!Look!OK!"
B-->"LMNopq"
--->"He!KuG!k!K!"
#include "stdio.h"
#include "string.h"
/*输入字符串A、B,A去掉B中有的字符*/
int main()
{
char A[64],B[32];
int i,j,k;
printf("请输入一个字符串A:\n");
scanf("%s",A);
printf("请输入一个字符串B:\n");
scanf("%s",B);
int len_A=strlen(A); //A有效字符数
int len_B=strlen(B); //B有效字符数
printf("剔除字符串B中有的字符后:\n");
for(i=0;i<len_A;i++) //A
{
for(j=0;j<len_B;j++) //B
{
//判断是否与B字符相同(不分大小写)
if(A[i]==B[j]||A[i]==B[j]+32||A[i]==B[j]-32)
{
//剔除字符
for(k=i;k<len_A;k++)
{
A[k]=A[k+1];
}
len_A--; //A有效字符数减一
i--; //继续从A字符串的第i位与B对比,防止漏掉一些重复字符
break;
}
}
}
printf("%s\n",A);
return 0;
}
数组的大小
sizeof(); //求任何类型数据的大小
strlen(); //专门用来求字符串的实际长度
#include <string.h>
size_t strlen(const char *s);
返回值:字符串的实际长度
参数:s --》你要计算长度的字符串
原理:计算字符串实际长度,遇到\0认为字符串结束了
总结:
第一:
sizeof是运算符 strlen是个函数
第二:
sizeof适用范围广 strlen只能求字符串的实际长度
第三:
sizeof求字符串的长度会把\0算上
strlen求字符串的长度不计算\0
字符串在计算机中的存储方式
字符串默认有一个结束标记\0(ASCII码值就是0)
char buf[10]="hello";
char buf1[]="hello"; //编译器会自动给字符串的末尾添加\0
int a=sizeof(buf); //定义的数组有下标,char类型占1个字节,a=10*1=10
int a1=sizeof(buf1); //buf1={'h','e','l','l','o','\0'} a1=6*1=6
int b=strlen(buf); //只能求字符串的实际长度,有效字符5个,b=5
int b1=strlen(buf1); //b=5