<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. android:duplicateParentState属性使用场景

    对于这个属性的使用也是在偶然的时候发现的,之前从未使用它,所以有必要阐述一下它的用法,什么场景会要用它这个属性,在我不知道之前这个属性之前,也同样能实现效果,但是当我知道它的存在之后,我肯定在某种场景 ...

  2. 16 关于webpack和npm中几个问题的说明

    1.json里面不能写注释 2.'webpack-dev-server'不是内部或外部命令,也不是可运行的程序或批处理文件. 注意:webpack-dev-server包只需要本地安装就行,不用全局安 ...

  3. BZOJ1101 [POI2007]Zap 和 CF451E Devu and Flowers

    Zap FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...

  4. CentOS 6.5下快速搭建ftp服务器

    来源:Linux社区 作者:Linux CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了v ...

  5. ASP.NET MVC 入门6、TempData

    TempData用来给控制各Action间传递值,或Action给View传递临时值时使用. TempData实际是将值临时存储于Session中. TempData中存储的值只能供一次访问使用, 即 ...

  6. Hive和HBase的区别 转载:https://www.cnblogs.com/guoruibing/articles/9894521.html

    1.Hive和HBase的区别 1)hive是sql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce. 2)hive是面向行存储的数据库. 3)Hive本身 ...

  7. django命令行安装和卸载

    1. 在dos命令行中输入 pip 如下命令进行安装: 安装最新的版本的 Django 命令如下: pip install django 安装 指定版本的 Django 命令如下: pip insta ...

  8. jmeter HTTP请求之content-type

    对于初次接触接口的同学来说,自己在发送一个http请求时,总会遇到这样那样的问题,比如必传参数不存在啊 出现这样类似问题的问题首先排除的应该是content-type是否正确,那什么是content- ...

  9. sql server set赋值和select 赋值的区别以及使用方法

    sqlserver存储过程中SELECT 与 SET 对变量赋值的区别   (备注:虽然变量赋值使用方法已经不是问题,但是,了解一下select和set赋值的区别,还是提高了不少认识.应该有很多人并不 ...

  10. Shared Nothing、Shared Everthting、Shared Disk

    数据库构架设计中主要有Shared Everthting.Shared Nothing.和Shared Disk:1.Shared Everything:一般是针对单个主机,完全透明共享CPU/MEM ...