c语言常用的几个函数

strcpy函数
2)如何给字符串进行赋值:
   A:字符串不能直接赋值
   B:目前而言。给字符串赋值的方法是通过strcpy函数
   C:strcpy函数需要string.h的头文件的支持
   D:在使用strcpy函数时不能把大串赋值给小串
 格式:strcpy(字符串1,字符串2)   //相当于是字符串1=字符串2;
 
strlen函数:
格式: strlen("字符串");
       strlen("一维字符型数组");
  A:用来测量一个字符串中实际所含有的字符个数。这个函数不包含\0
  
  B:strlen函数需要string.h的头文件的支持


sizeof函数:
格式:  sizeof("一维字符型数组"/数组名)  用来测量数组的长度   a[100] ,  sizeof(a)//100


strcat函数
功能:用来连接两个字符串
格式:strcat(目标串,源串);//将源串添加在目标串的后面,目标串=目标串+源串。源串不变


strcmp函数
功能:比较两个字符串的大小
如何来比较字符串的大小,分别取出两个字符串的每个字符进行比较,
知道发现不相等的字符为止,然后以那个不相等的字符来决定字符串的大小。
"abcd" > "ab34"
"abcd"  == "abcd"
"abcd"    "ab"  //第二个字符串的第三个\0的ASCII码是0,是最小的
\0的ASCII码是0
如何要表示字符串1比字符串2大
if(strcmp(字符串1,字符串2)>0)    相当于串1>串2
if(strcmp(字符串1,字符串2)<0)    相当于串1<串2
if(strcmp(字符串1,字符串2)==0)   相当于串1==串2
if(strcmp(字符串1,字符串2)!=0)   相当于串1与串2不相等
if(strcmp(字符串1,字符串2))      相当于串1与串2不相等

strlwr()函数
功能:把一个字符串中的大写字母变成小写字母,其他不变。(只处理大写字母)
格式: strlwr("字符串");


strupr()函数
功能:把一个字符串中的小写字母变成大写字母,其他不变。(只处理小写字母)

格式: strupr("字符串");

 main()
 {
char a[100]="abcde";
int k,m;
k=strlen(a);//5   测量数组中包含的字符个数,不包括\0
m=sizeof(a);//100  测量数组长度
printf("k=%d,m=%d",k,m);
 
 }
  void main()
 {
    char a[100]="abcde",b[200];

    int k,m;
    k=strlen(a);//5   测量数组中包含的字符个数,不包括\0
    m=sizeof(a);//100  测量数组长度
    printf("k=%d,m=%d",k,m);
 
 }
 
void main()
 {
    char a[100]="abcde",b[200]="123;
    int i=0;
    if(strcmp(a,b)>0)
    {
        printf("aaa");
    }
    else
   {
      printf("bbb");
   }
 }


 

 
 

目前而言,所学的字符串,既不能直接赋值,也不能直接比较大小,必须通过函数
 赋值      strcpy
 比较大小  strcmp

  main()
 {
     char ch[80]="abcdefgh",;
     int i=0;
     for(i=0;ch[i]!='\0';i++)  ==》等价于 for(i=0;ch[i];i++)遍历数组ch中的所有元素
     {
         if(ch[i]>='a' && ch[i]<='z')//小写字母
         ch[i]-=32;//ch[i]代表每一个元素,小写字母变成大写字母
     }
    puts(ch);
 }


 
 如何来访问一维字符型数组中的每一个元素
 1)对于单纯的输入和输出而言,确实没有必须访问字符数组每一个元素
 2)有时候需要对字符型数组中的某些元素进行处理,所以这个时候就必须访问字符型数组中的所有元素
 3)通项
 
 4)如何表示某个元素是小写字母
 a[i]>='a' && a[i]<='z')
5)  如何表示某个元素是大写字母
 a[i]>='A' && a[i]<='Z')
 6)表示是一个英文字母
 a[i]>='a' && a[i]<='z') || [i]>='A' && a[i]<='Z')
 7)如何表示是一个数字字符
 a[i]>='0' && a[i]<='9'
 a[i]>=48 && a[i]<=57   对应的Ascii码
 8)以数字表示的字符减去'0'就变成整数的数字
  'n'-'0'==n
  '1'-'0'==1
  '2'-'0'==2
  '5'-'0'==5
  9)
  s=10*s+ch[i]-'0'
  s=s+ch[i]-'0'
  main()
 {//程序功能为把循环到的数字的值加入到s中
char ch[80]="12ab56";
int i,s=0;
for(i=0;ch[i]!='\0';i+=2)  
{
if(ch[i]>='0' && ch[i]<='9')
s+=ch[i]-'0';//1+5
}
printf("s=%d",s);//6
 }
  main()
 {//程序功能为把循环到的数字的值加入到s中
char ch[80]="12ab56";
int i,s=0;
for(i=0;ch[i]!='\0';i++)  
{
if(ch[i]>='0' && ch[i]<='9')
           s=10*s+ch[i]-'0';//1256取出所有的数字
           //s=s+ch[i]-'0';//1+2+5+6
  }
printf("s=%d",s);
 }
 44集
 main()
 {
char a[80]="AB",b[80]="LMNP";
int i=0;
strcat(a,b);   //把b的值连在a的后面,a就成了 "ABLMNP",b没有变化
while(a[i++])  //先引用,再自加,访问a[i]中的每个元素
b[i]=a[i];  
puts(b); 
 }


 main()
 {   char str[]="SSSWLIA",c;
 int k;
     for(k=2;str[k];k++)
{
c=str[k];
switch(c)
{
case 'I': ++k; break;
case 'L': continue;
default: putchar(c); continue;//S*W*
 
 
}
putchar("*");
}


第一例


让用户输入一个字符串,把其中的大写变成小写,把小写变成大写,其他不变
 


算法分析:
//gets(a);
char a[30]="ajdCDkdS2345E5Ffej",i=0;
puts(a);
//方法一
while(a[i++])
{
if(a[i]>='a' && a[i]<='z')
{
a[i]-=32;
continue;
}
if(a[i]>='A' && a[i]<='Z')
{
a[i]+=32;

}
}


//方法二


while(a[i++])
{
if(a[i]>='a' && a[i]<='z')
{
a[i]-=32;

}
else 
if(a[i]>='A' && a[i]<='Z')
{
a[i]+=32;

}
}




让用户输入一个字符串,查找出其中的原音字母的个数 a e i o u的个数。不区分大小写。


char ch[]="abcdio123ujfOUTADEIURESBj",i=0,sum=0;
for(i=0;ch[i];i++)
{
switch(ch[i])
{
case 'a': 
case 'e': 
case 'i': 
case 'o': 
case 'u': 
case 'A':   
case 'E': 
case 'I': 
case 'O': 
case 'U': sum++; //如果case后面不接任何语句,说明这些case与下面的是或的关系
}
}
printf("sum=%d,sum);


for(i=0;ch[i];i++)
{
switch(ch[i])
{
case 'a':
case 'A': num[0]++
case 'e': 
case 'E': num[1]++
case 'i': 
case 'I': num[2]++
case 'o': 
case 'O': num[3]++
case 'u': 
case 'U': num[4]++; //分别算出原音字母的个数
}
}
让用户输入一个字符串删除字符串中的所有原音字母,不区分大小写。


char a[]="This is a book! hello my baby!",b[100]="",i,j=0;
puts(a);
for(i=0;a[i];i++)
{
switch(a[i])
{
case 'a': 
case 'e': 
case 'i': 
case 'o': 
case 'u': 
case 'A':   
case 'E': 
case 'I': 
case 'O': 
case 'U': continue;
}
b[j++]=a[i];

}


b[j]='\0';//这一步不要忘了




或者


for(i=0;a[i];i++)
{
switch(a[i])
{
case 'a': 
case 'e': 
case 'i': 
case 'o': 
case 'u': 
case 'A':   
case 'E': 
case 'I': 
case 'O': 
case 'U': break;
default: b[j++]=a[i];
}


}
b[j]='\0';//这一步不要忘了
puts(b);
strcpy(a,b);
puts(a);







 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aFakeProgramer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值