C语言常用函数

来源:互联网 发布:淘宝照片木刻画 编辑:程序博客网 时间:2024/06/06 08:28

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","#"产生0Xsprintf(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;}



原创粉丝点击