C语言常用函数

sprintf(),sscanf(),memset(),memcpy(),isalpha(),isdigit(),isprint(),,toupper(),tolower(),fgets(),atoi(),strchr()
ceil(),floor()

一、sprintf():把格式化的数据写入某个字符串缓冲区

返回值:返回写入buffer 的字符数,出错则返回-1. 如果 buffer 或 format 是空指针,且不出错而继续,函数将返回-1

例:int len=sprintf(s,"%d",x);返回的是字符串s的长度。注意:数组s的类型必须是char!    

sprintf(s, "%d", 123); //把整数123 打印成一个字符串保存在s 中,产生"123"

char buf[60]={0};
char*who="I";
char*whom="CSDN";
sprintf(buf,"%slove%s.",who,whom);
printf("%s",buf);
输出结果:"IloveCSDN."
sprintf(s,"%-*d",4,'A');//产生"65"
sprintf(s,"%#0*X",8,128);//产生"0X000080","#"产生0X
sprintf(s,"%*.*f",10,2,3.1415926);//产生"3.14"


#include <stdio.h>
int main( void )
{
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;
   // 格式化并打印各种数据到buffer
   j  = sprintf( buffer,    "   String:    %s\n", s ); // C4996
   j += sprintf( buffer + j, "   Character: %c\n", c ); // C4996
   j += sprintf( buffer + j, "   Integer:   %d\n", i ); // C4996
   j += sprintf( buffer + j, "   Real:      %f\n", fp );// C4996
    
   printf( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}


输出结果 :
Output:
String: computer
  
Character: l
Integer: 35
Real: 1.732053
character count = 79



二、sscanf:读取格式化的字符串中的数据。
char buf[512];//注意数组的类型
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);
结果为:123456

sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
结果为:1234

sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
结果为:123456

sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf

sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf

给定一个字符串"hello, world",仅保留"world"。(注意:“,”之后有一空格)
sscanf(“hello, world”, "%*s%s", buf);
printf("%s\n", buf);
结果为:world
  P.S. %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了,
  如果没有空格则结果为NULL。


%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB'] 匹配a、B、'中一员,贪婪性
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性



三、memcpy()函数:从数组a中复制k个元素到数组b中
例:
int a[1000],b[1000];
memcpy(b,a,sizeof(int)*k);

把数组a中全部元素复制到数组b中
int a[1000],b[1000];
memcpy(b,a,sizeof(a));




四、memset()函数:对数组进行清零操作
例:char a[1000];

    memset(a,0,sizeof(a));




五、fgets():函数:一次性读取一整行,遇到换行结束。
例:char a[1000],b[1000];
    fgets(a,sizeof(b),stdin);


六、isalpha(a):判断a是否为字母,是返回非零。
    isdigit(a):判断a是否为阿拉伯数字,是返回非零。
    isprint(a):判断a是否可打印,是返回非零。

    char a;
    toupper(a):将数组a中的字母转换成大写形式
    strupr(a):将数组a中的字母转换成大写形式
    tolower(a):将数组a中的字母转换成小写形式

    strlwr(a):将数组a中的字母转换成小写形式


七、atoi()函数:在stdlib.h头文件中把字符串转换成整型数的一个函数。貌似只能对字符串里的数字进行转换,若字符串中是字母则返回0

        例:char s[]="123.123";//注意数组类型
             scanf("%s",s);
             printf("%d\n",atoi(s));//输出123,四舍五入


              char a[] = "-100";

    char  b[] =  "123" ;
    int  c;
    c =  atoi (a) +  atoi (b);
    printf ( "c=%d\n" , c);//输出23

八:strchr()函数:可以查找字符串s中首次出现字符c的位置。

例:

#include <string.h>
#include <stdio.h>
int main(void)
{
    char string[17];
    char *ptr,c='r';
    strcpy(string,"Thisisastring");
    ptr=strchr(string,c);
    if(ptr)
        printf("The character %cis at position:%s\n",c,ptr);
    else
        printf("The character was not found\n");
    return 0;
}


运行结果:The character r is at position: ring


ceil():进一法,floor():去尾法
#include<stdio.h>
#include<math.h>
int main()
{
    double number=123.45;
    double down,up;
    down=floor(number);
    up=ceil(number);
    printf("%5.2lf\n",number);
    printf("%5.2lf\n",down);
    printf("%5.2lf\n",up);
    return 0;
}



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值