<stdlib.h>(1) <stdlib.h>(2)

malloc()

用来动态地分配内存空间,分配成功返回指向该内存的地址,失败则返回 NULL。

  • 前面的 (int*) 或者 (char*) 表明数据类型
//不出现方括号
//将字符串复制到 str_start
char *str_start = malloc(sizeof(char)*1024);
strcpy(str_start, "9 12 5 4 2 b 7 11 3 6 10 13 14 1 8 15 ");

realloc()

重新分配内存空间

atoi()

C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。

  • 如果参数不是可转化的数字,则会转为0。
  • atoi("b") = 0
  • 返回值:该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。

itoa()

将整型值转换为字符串。(只在 Windows 下,不在 Linux 下,后者使用 sprintf)

<stdio.h>

scanf()

C 库函数 int scanf(const char *format, ...) 从标准输入 stdin 读取格式化输入。

  • format -- 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符format 说明符
  • 附加参数 -- 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
  • 可以输入数字,字符串,字符等
  • 返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
  • &a、&b、&c 中的 & 是地址运算符,分别获得这三个变量的内存地址。
  • %d%d%d 是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、tab 键、回车键分隔。
  • 在用 %c 输入时,空格和"转义字符"均作为有效字符。
  • scanf("%d%d%d",&a,&b,&c);

注意 scanf 中参数的取地址符,返回值为赋值参数的个数

// counts+.c
// reads an integer from stdin and counts
// prompts the user
#include <stdio.h>
#include <stdlib.h> int main(void) {
int num;
printf("Please input a number: "); // this line added to counts.c
if (scanf("%d", &num) != 1) {
fprintf(stderr, "Usage: a number expected\n");
return EXIT_FAILURE;
}
for (int i=1; i<=num; i++) {
printf("%d ",i);
}
printf("\n");
return EXIT_SUCCESS;
}

fscanf()

C 库函数 int fscanf(FILE *stream, const char *format, ...) 从流 stream 读取格式化输入。

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
  • format -- 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符format 说明符
    format 说明符形式为 [=%[*][width][modifiers]type=]
  • 附加参数 -- 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。

fgets()

C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

  • str -- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
  • n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
#include <stdio.h>
#include <stdlib.h> int main() {
char r[10];
char s[10];
char t[10]; int r_num;
int s_num;
int t_num;
int sum = 0; // get data from stdin
// stdin can be substitued by FILE
// for stdin: we can input data from command line or
// from files, like ./a.out < input.txt
fgets(r, 10, stdin);
fgets(s, 10, stdin);
fgets(t, 10, stdin); //determine whether data are integer or not
if (sscanf(r, "%d", &r_num) != 1 || sscanf(s, "%d", &s_num) != 1 || sscanf(t, "%d", &t_num) != 1) {
fprintf(stderr, "Not all of strings can convert to integer.\n");
return EXIT_FAILURE;
}
else {
sum = r_num + s_num + t_num;
fprintf(stdout, "Toal: %d.\n", sum);
}
return EXIT_SUCCESS;
}

fprintf()

C 库函数 int fprintf(FILE *stream, const char *format, ...) 发送格式化输出到流 stream 中。

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
  • format -- 这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是 %[flags][width][.precision][length]specifier
  • 附加参数 -- 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
  • 返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
  • file可以使 stderr 或者 stdout
  • 参考:https://wiki.cse.unsw.edu.au/cs9024cgi/19T2/Lec01IO
  • 参考:格式化输出函数fprintf()中的stdout、stderr
//读取的数据存储在 str 中
//可以通过手动输入
//也可以通过命令行从文件输入
//a < input.txt
//将需要输入的信息存储到 input.txt 中即可
fgets(str, 50, stdin); //可以直接输出到控制台
//也可以通过命令行输出到文件中
//a < input.txt > output.txt
//只会将含有 stdout 的内容输出到文件中
//带有 stderr 的部分则是正常以错误的形式打印在控制台上
fprintf(stderr, "Error!");
fprintf(stdout, "Error!");

gets()

C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

sprintf()

C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串。

  • str -- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
  • format -- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是 %[flags][width][.precision][length]specifier
  • 附加参数 -- 根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
  • 返回值:如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。
  • 相当于转字符串函数(将其他格式转换为字符串)

sscanf()

C 库函数 int sscanf(const char *str, const char *format, ...) 从字符串读取格式化输入。

  • str -- 这是 C 字符串,是函数检索数据的源。
  • format -- 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符format 说明符
    format 说明符形式为 [=%[*][width][modifiers]type=]
  • 附加参数 -- 这个函数接受一系列的指针作为附加参数,每一个指针都指向一个对象,对象类型由 format 字符串中相应的 % 标签指定,参数与 % 标签的顺序相同。
  • 返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
  • sscanf(str, "%d", &num) == 1:相当于判断是否能将字符串转为整数,如果可以则会返回 True,同时转化好的整数会存储在 num 内部。
  • 将字符串转换为其他参数
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main()
{
int day, year;
char weekday[20], month[20], dtm[100]; strcpy( dtm, "Saturday March 25 1989" );
sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year ); printf("%s %d, %d = %s\n", month, day, year, weekday ); return(0);
}

直接通过参数传递

参考:Sscanf问题和从命令行读取

#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]) {
int r_num;
int s_num;
int t_num;
int sum = 0; //determine whether data are integer or not
if (sscanf(argv[1], "%d", &r_num) != 1 || sscanf(argv[2], "%d", &s_num) != 1 || sscanf(argv[3], "%d", &t_num) != 1) {
fprintf(stderr, "Not all of strings can convert to integer.\n");
return EXIT_FAILURE;
}
else {
sum = r_num + s_num + t_num;
fprintf(stdout, "Toal: %d.\n", sum);
}
return EXIT_SUCCESS;
}

<string.h>

strtok()

C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。

strcmp()

C 库函数 int strcmp(const char *str1, const char *str2)str1 所指向的字符串和 str2 所指向的字符串进行比较。

  • 通过 == 来判断的话,是需要地址也一致的
  • 如果返回值 < 0,则表示 str1 小于 str2。
  • 如果返回值 > 0,则表示 str2 小于 str1。
  • 如果返回值 = 0,则表示 str1 等于 str2。

strcpy()

C 库函数 char *strcpy(char *dest, const char *src)src 所指向的字符串复制到 dest

  • 该函数返回一个指向最终的目标字符串 dest 的指针。

  • struct 内部字符串赋值需要用到 strcpy 函数。

不出现数组形式的字符串:

#include <string.h>
#include <stdio.h>
#include <stdlib.h> int main() {
char *str = malloc(sizeof(char) * 100);
strcpy(str, "9 12 5 4c 2 b 7 11 3 6 10 13 14 1 8 15 ");
//char str[100] = "lsdkjflsdjflsdjflkdsjfkl";
//printf("%s", str);
printf("%s\n", str);
return 0;
}

<math.h>

ceil()

C 库函数 double ceil(double x) 返回大于或等于 x 的最小的整数值。返回值为 double。

【406】C语言相关函数的更多相关文章

  1. LoadRunner函数

    一.基础函数简介 在VU左边导航栏中,有三个LoadRunner框架函数,分别是vuser_init().Action().vuser_end().这三个函数存在于任何Vuser类型的脚本中. vus ...

  2. LoadRunner脚本 《第二篇》

    一.基础函数简介 在VU左边导航栏中,有三个LoadRunner框架函数,分别是vuser_init().Action().vuser_end().这三个函数存在于任何Vuser类型的脚本中. vus ...

  3. LoadRunner的函数

     一.基础函数 在VU左边导航栏中,有三个LR框架函数,分别是vuser_init(),Action(),vuser_end(). 这三个函数存在于任何Vuser类型的脚本中: ●vuser_init ...

  4. LoadRunner使用(2)

    一.基础函数 在VU左边导航栏中,有三个LoadRunner框架函数,分别是Vuser_init(),Action(),vuser_end().这三个函数存在于任何Vuser类型的脚本中. vuser ...

  5. C语言操作WINDOWS系统存储区数字证书相关函数详解及实例

     C语言操作WINDOWS系统存储区数字证书相关函数详解及实例 以下代码使用C++实现遍历存储区证书及使用UI选择一个证书 --使用CertOpenSystemStore打开证书存储区. --在循环中 ...

  6. C语言文件操作相关函数

    在实际应用中,我们往往需要对文件进行操作,下面我将介绍C语言的一些关于操作文件的函数. 一.计算机文件 计算机文件是以计算机硬盘为载体存储在计算机上的信息集合,是存储在某种长期储存设备上的一段数据流. ...

  7. C语言中时间调用处理的相关函数介绍

    asctime(将时间和日期以字符串格式表示) 相关函数:time,ctime,gmtime,localtime 表头文件:#include<time.h> 定义函数:char * asc ...

  8. 随机以及时间相关函数——C语言描述

    随机相关的函数 头文件 stdlib.h 相关函数 :rand .srand rand( rand C++ Reference ) 函数声明:int rand( void ); rand函数返回一个位 ...

  9. C语言file相关函数学习

    1.errno_t fopen_s( FILE** pFile, const char *filename, const char *mode ); 注:fopen_s能过创建文件,但无法创建目录 打 ...

随机推荐

  1. python中函数的定义、返回值以及参数的简要介绍

    一. 1.函数 定义:def关键字开头,空格之后接函数名称和圆括号(),后面紧跟‘:”. 函数是对功能的封装 语法: def 函数名(形参列表): 函数体(代码块,return) 调用: 函数名(实参 ...

  2. 第八届蓝桥杯C/C++程序设计本科B组决赛 ——发现环(编程大题_签到题_tarjan判环)

    标题:发现环 小明的实验室有N台电脑,编号1~N.原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络.在树形网络上,任意两台电脑之间有唯一的路径相连. 不过在最近一次维护网络时,管理员误操 ...

  3. MySQL 表查询

    表查询 前期准备一张表 create table emp( id int not null unique auto_increment, name varchar(32) not null, gend ...

  4. Tomcat报错:Java.long.nullpointerException,详细是resp.getwriter.write报错

    报错原因: 空指针 在out.write(name);时,name不能为null,哪怕你随便给name赋值为xxoo啥的都可以,不要为null 改正:String name = "fail& ...

  5. 47、[源码]-Spring容器创建-初始化MessageSource

    47.[源码]-Spring容器创建-初始化MessageSource 7.initMessageSource();初始化MessageSource组件(做国际化功能:消息绑定,消息解析): 获取Be ...

  6. Define Interfaces and Share Class Members through Mixins in Dart

    In this lesson, we will cover Interfaces and Mixins. Interfaces act as a contract containing propert ...

  7. document基本操作 动态脚本-动态样式-创建表格

    var html = document.documentElement; var body = document.body; window.onload = function() { //docume ...

  8. openssl制作双向认证经过验证可行

    openssl制作双向认证经过验证可行 http://www.360doc.com/content/12/0524/15/2150778_213390447.shtml 2012-05-24  履历馆 ...

  9. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest

    目录 Contest Info Solutions A. Berstagram B. The Feast and the Bus C. Trip to Saint Petersburg E. The ...

  10. 51 NOD 1244 莫比乌斯函数之和(杜教筛)

    1244 莫比乌斯函数之和 基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens) ...