C语言库函数

stdio.h


include ;

  • printf(“可以在这写要输出的字符串格式,以 %x 的形式,格式化后面的参数”, params…);
  • sizeof(一个变量或者一个常量、一种数据类型); 可以用来计算参数所占的字节数
  • putchar(90); 输出一个字符:参数可以是一个字符,或一个字符对应的int值。 注: char c = 90; 是有效的
  • getchar(); 读取输入一个字符。可以读入空格、TAB、回车(读回车时连击两次),直到遇到回车为止。
  • scanf(..); 可以接收多个输入

接收一个字符串:char a[10]; scanf(“%s”, a);

接收多个数据:char a[10]; int x; scanf(“%d, %s”, &x, a);

多个数据间的分隔符可以是任意符号,这里是 逗号;

后面的参数为,指定接收的变量的 内存地址

  • FILE 是一个结构体类型,表示文件。不同的平台,其内部属性不一样。 一般不用关心
    • stdin 标准输入,宏原型:FILE *__stdinp;
    • stdout 标准输出,宏原型:FILE *__stdoutp;
    • stderr 标准错误,宏原型:FILE *__stderrp;
  • int fscanf(FILE * f, const char * format, ...),从文件流指针f中读取,以format为格式,

输出到第三个参数中. 函数执行成功返回非零值,否则返回零。format格式参考 printf()

  • FILE *fopen(const char * __filename, const char * __mode), 根据指定文件,返回FILE指针

mode (引自 http://blog.csdn.net/u011974987/article/details/52354074 ):

“r”(只读) 为输入打开一个文本文件
“w”(只写) 为输出打开一个文本文件
“a”(追加) 为追加打开一个文本文件
“rb”(只读) 为输入打开一个二进制文件
“wb”(只写) 为输出打开一个二进制文件
“ab”(追加) 为追加打开一个二进制文件
“r+”(读写) 为读/写打开一个文本文件
“w+”(读写) 为读/写创建一个文本文件
“a+”(读写) 为读/写打开一个文本文件
“rb+”(读写) 为读/写打开一个二进制文件
“wb+”(读写) 为读/写创建一个二进制文件
“ab+”(读写) 为读/写打开一个二进制文件

一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符’/n’,而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

  • int fputs(const char * __restrict, FILE * file),将字符串送到文件流中进行输出。输出成功,返回非零值。

  • char *fgets(char *buffer, int size, FILE*stream); 从stream中读取最多size-1大小的内容到指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,系统将自动在最后加’\0’,返回;失败时返回null。

    每调用一次,读取一段或最多一行,无法使用 精准的判断来循环读取到文件末尾。

    可以使用,fgetc()==EOF来判断

  • int fseek(FILE *, long offset, int fromWhere); 重新定位文件指针位置

  • SEEK_SET 文件开始位置+偏移,宏 用于fseek()

  • SEEK_CUR 文件当前位置+偏移,宏 用于fseek()

  • SEEK_END 文件结束位置+偏移,宏 用于fseek()

  • long ftell(FILE *); 返回当前文件指针位置

  • void rewind(FILE *); 将文件指针重新指向文件的开头

  • size_t fread(void * __ptr, size_t __size, size_t __nitems, FILE * __stream);

    size_t 类型是一个无符号整数,其所占内存长度与平台相关

    从文件流__stream中,每次读取__size个长度,共要读取__nitems,读取到的暂存到__ptr指针中

  • int fclose(FILE *); 关闭文件流

  • int fgetc(FILE *); 从文件流中读取一个字符,返回字符在ASCII表对应的整数值

  • int fputc(int, FILE *); 输出一个字符到文件流。返回字符在ASCII表对应的整数值

  • EOF 文件结束符,宏。 其实值就是-1

  • ssize_t getline(char **__linep, size_t *__linecapp, FILE *__stream); 从文件流__stream中,读取一行字符。__linep为字符串指针的指针,可以用字符串指针的地址形式表示,读取到的一行字符串会用它来保存;__linecapp为一个size_t类型的指针,表示一行最大读取的字符数,是一个2进制数,也是由函数内存计算得出。函数最后返回一个ssize_t 即实际为long类型,表示实际读取的字符数,包含一个字符串的结束符’\0’

  • int feof(FILE *); 检测文件流是否结束。返回非零值,表示已结束

  • int fflush(FILE *); 将缓冲内容输出到文件,并清空缓冲区

string.h


include

  • strlen(char*); 返回字符串长度, 不包括 ‘\0’ 结束符
  • strcpy(char dest, char src); 将src复制到dest中,原dest覆盖。 要注意size: dest是否能容纳src
  • strcat(char dest, char src); 将src追加到dest的尾部。 要注意size: dest是否能容纳 dest+src
  • strcmp(char s1, char s2); 个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小),

直到字符不相同或者遇见’\0’为止。如果全部字符都相同,则返回值为0。

如果不相同,则返回两个字符串中第一个不相同的字符ASCII码值的差。

即字符串1大于字符串2时函数返回值为正,否则为负。

  • puts

    (char*); 输出一个字段串。输出时直到遇见’\0’为止。

    • gets(char); 读取一个字符串。 char buffer[20];char r = gets(buffer);

stdlib.h


include

  • exit(int); 退出进程。参数非0表示异常退出,反之为正常退出

unistd.h


include

  • sleep(unsigned int); 线程睡眠;参数为秒

  • usleep(useconds_t); 线程睡眠;参数微秒

    上面两个函数为linux系统下的。如果是windows系统,则是windows.h中Sleep(),参数为毫秒

pthread.h

include

  • 1
    2
    3
    4
    int pthread_create(pthread_t _Nullable * _Nonnull __restrict,
    const pthread_attr_t * _Nullable __restrict,
    void * _Nullable (* _Nonnull)(void * _Nullable),
    void * _Nullable __restrict);

    创建线程。返回值为0,表示pthread_create执行成功。

参数1:pthread_t 类型的指针,该参数就是要被创建的线程,实际应用时传入该类型的地址;参数2:线程属性;参数3:只有一个参数的函数;参数4:前面函数参数的值。

该创建线程的函数,在没有其它相关函数调用时,会执行一次参数3上的函数。

如果要传入多个参数,可以自定义一个struct,传入。

  • int pthread_join(pthread_t , void * _Nullable * _Nullable) __DARWIN_ALIAS_C(pthread_join);

阻塞调用线程,等待参数线程执行成功。返回值为0,表示pthread_join执行成功。

参数1:参数线程pthread_t 类型的指针;参数2:保存接收,参数线程中函数的返回值,可以不接收而传入NULL

  • int pthread_attr_init(pthread_attr_t *); 初始化线程属性。需要在创建线程之前使用

  • pthread_attr_setscope(pthread_attr_t *, int) 设置线程作用范围。可设定的为两个宏值,如下:

    PTHREAD_SCOPE_SYSTEM 表示由系统控制;非绑定状态

    PTHREAD_SCOPE_PROCESS 表示由进程控制;绑定到进程

    通过设置被绑定的轻进程的优先级和调度级可以使得绑定的线程满足诸如实时反应之类的要求。

参考


《C语言常用函数速查手册》

------ 本文结束 ------

版权声明
协议:No Fuck License

stone 创作并维护
本文首发于 stone世界 博客( http://stone86.top
版权所有,侵权必究。如要转载,请声明出处

Fork me on GitHub