精华内容
下载资源
问答
  • c语言常见的头文件

    2019-08-24 15:53:09
    序号库类别头文件详细说明 1错误处理errno.h 2字符处理ctype.h 3地区化local.h 4数学函数math.h 5信号处理signal.h 6输入输出stdio.h 7实用工具程序stdlib.h 8字符串处理string.h 字符处理函数 本类别...

    序号 库类别 头文件  详细说明 

    1 错误处理 errno.h   

    2 字符处理 ctype.h   

    3 地区化 local.h   

    4 数学函数 math.h   

    5 信号处理 signal.h   

    6 输入输出 stdio.h   

    7 实用工具程序 stdlib.h   

    8 字符串处理 string.h

     

    字符处理函数  

    本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换

     

    头文件 ctype.h 

     

    函数列表<>  

    函数类别 函数用途  详细说明 

    字符测试 是否字母和数字  isalnum  

     是否字母  isalpha  

     是否控制字符   iscntrl  

     是否数字  isdigit  

     是否可显示字符(除空格外)  isgraph  

     是否可显示字符(包括空格)  isprint  

     是否既不是空格,又不是字母和数字的可显示字符  ispunct  

     是否空格  isspace  

     是否大写字母  isupper  

     是否16进制数字(0-9,A-F)字符  isxdigit  

    字符大小写转换函数  转换为大写字母  toupper  

     转换为小写字母  tolower  

     

    地区化  

    本类别的函数用于处理不同国家的语言差异。

     

    头文件 local.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    地区控制 地区设置  setlocale  

    数字格式约定查询 国家的货币、日期、时间等的格式转换  localeconv  

     

    数学函数  

    本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51)

     

    头文件 math.h

     

    函数列表  

    函数类别 函数用途  详细说明 

    错误条件处理 定义域错误(函数的输入参数值不在规定的范围内)    

     值域错误(函数的返回值不在规定的范围内)    

    三角函数 反余弦  acos  

     反正弦  asin  

     反正切  atan  

     反正切2  atan2  

     余弦  cos  

     正弦  sin  

     正切  tan  

    双曲函数 双曲余弦   cosh  

     双曲正弦   sinh  

     双曲正切  tanh  

    指数和对数 指数函数  exp  

     指数分解函数  frexp  

     乘积指数函数  fdexp  

     自然对数  log  

     以10为底的对数  log10  

     浮点数分解函数  modf  

    幂函数 幂函数  pow  

     平方根函数  sqrt  

    整数截断,绝对值和求余数函数 求下限接近整数  ceil  

     绝对值  fabs  

     求上限接近整数  floor  

     求余数  fmod  

     

     

    本分类函数用于实现在不同底函数之间直接跳转代码。 头文件 setjmp.h io.h

     

    函数列表  

    函数类别 函数用途  详细说明 

    保存调用环境   setjmp  

    恢复调用环境   longjmp  

     

    信号处理  

    该分类函数用于处理那些在程序执行过程中发生例外的情况。

     

    头文件 signal.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    指定信号处理函数   signal  

    发送信号   raise  

     

    可变参数处理  

    本类函数用于实现诸如printf,scanf等参数数量可变底函数。

     

    头文件 stdarg.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    可变参数访问宏 可变参数开始宏  va_start  

     可变参数结束宏  va_end  

    可变参数访问宏 访问下一个可变参数宏  va_arg  

     

    输入输出函数  

    该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现

     

    头文件 stdio.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    文件操作    

     删除文件  remove  

     修改文件名称  rename  

     生成临时文件名称  tmpfile  

     得到临时文件路径  tmpnam  

    文件访问 关闭文件   fclose  

     刷新缓冲区  fflush  

     打开文件  fopen  

     将已存在的流指针和新文件连接  freopen  

     设置磁盘缓冲区  setbuf  

     设置磁盘缓冲区  setvbuf  

    格式化输入与输出函数  格式输出   fprintf  

     格式输入  fscanf  

     格式输出(控制台)  printf  

     格式输入(控制台)  scanf  

     格式输出到缓冲区  sprintf  

     从缓冲区中按格式输入  sscanf  

     格式化输出  vfprintf  

     格式化输出  vprintf  

     格式化输出  vsprintf  

    字符输入输出函数 输入一个字符  fgetc  

     字符串输入  fgets  

     字符输出  fputc  

     字符串输出  fputs  

     字符输入(控制台)  getc  

     字符输入(控制台)  getchar  

     字符串输入(控制台)  gets  

     字符输出(控制台)  putc  

     字符输出(控制台)  putchar  

     字符串输出(控制台)  puts  

     字符输出到流的头部  ungetc  

    直接输入输出 直接流读操作  fread  

     直接流写操作  fwrite  

    文件定位函数 得到文件位置  fgetpos  

     文件位置移动  fseek  

     文件位置设置  fsetpos  

     得到文件位置  ftell  

     文件位置复零位  remind  

    错误处理函数 错误清除  clearerr  

     文件结尾判断  feof  

     文件错误检测  ferror  

     得到错误提示字符串  perror  

     

    实用工具函数  

    本分类给出了一些函数无法按以上分类,但又是编程所必须要的。

     

    头文件 stdlib.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    字符串转换函数 字符串转换为整数  atoi  

     字符串转换为长整数  atol  

     字符串转换为浮点数  strtod  

     字符串转换为长整数  strtol  

     字符串转换为无符号长整型  strtoul  

    伪随机序列产生函数 产生随机数  rand  

     设置随机函数的起动数值  srand  

    存储管理函数 分配存储器  calloc  

     释放存储器  free  

     存储器分配  malloc  

     重新分配存储器  realloc  

    环境通信 中止程序  abort  

     退出程序执行,并清除环境变量  atexit  

     退出程序执行  exit  

     读取环境参数  getenv  

     程序挂起,临时执行一个其他程序  system  

    搜索和排序工具 二分查找(数据必须已排序)  bsearch  

     快速排序  qsort  

    整数运算函数 求绝对值  abs  

       div  

     得到除法运算底商和余数   

     求长整形底绝对值  labs  

     求长整形除法的商和余数  ldiv  

    多字节字符函数 得到多字节字符的字节数  mblen  

     得到多字节字符的字节数  mbtowc  

     多字节字符转换  wctomb  

    多字节字符的字符串操作 将多字节串转换为整数数组   mbstowcs  

     将多字节串转换为字符数组  mcstowbs  

     

    字符串处理  

    本分类的函数用于对字符串进行合并、比较等操作

     

    头文件 string.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    字符串拷贝 块拷贝(目的和源存储区不可重叠)  memcpy  

     块拷贝(目的和源存储区可重叠)  memmove  

     串拷贝  strcpy  

     按长度的串拷贝  strncpy  

    字符串连接函数 串连接  strcat  

     按长度连接字符串  strncat  

    串比较函数 块比较  memcmp  

     字符串比较  strcmp  

     字符串比较(用于非英文字符)  strcoll  

     按长度对字符串比较  strncmp  

     字符串转换  strxfrm  

    字符与字符串查找 字符查找   memchr 

     字符查找   strchr  

     字符串查找  strcspn  

     字符串查找  strpbrk  

     字符串查找   strspn  

     字符串查找  strstr  

     字符串分解  strtok  

    杂类函数 字符串设置  memset  

     错误字符串映射   strerror  

     求字符串长度   strlen  

     

    日期和时间函数  

    本类别给出时间和日期处理函数 

     

    头文件 time.h 

     

    函数列表  

    函数类别 函数用途  详细说明 

    时间操作函数 得到处理器时间  clock  

     得到时间差  difftime  

     设置时间  mktime  

     得到时间  time  

    时间转换函数 得到以ASCII码表示的时间  asctime  

     得到字符串表示的时间  ctime  

     得到指定格式的时间  strftime  

     

    函数库未来的发展方向  

    本部分用于说明各类别函数库在将来如何发展。

     

    展开全文
  • 不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货:1.:定义了输入输出函数、类型以及宏,函数几乎占了标准...

    不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货:

    1.:定义了输入输出函数、类型以及宏,函数几乎占了标准库的1/3。

    (1)文件访问。

    FILE *fopen(“filename”,“mode”):

    以mode模式打开地址为'filename'的文件,并返回文件指针。

    访问模式主要是“r”:只读;   “w” :只写,并删除已有内容;  “a”:追加,在末尾追加;

    “r+”, “w+”:读写; “a+”追加,上述结尾加“b”:二进制文件操作。

    注意:其中r是打开文件,而w会创建(如果文件不存在);  w会覆盖原有内容,a则是在原有文件末尾追加。

    int fclose(FILE *f):

    释放缓冲区数据,关闭流。

    下面两个没太用过:

    FILE *freopen(“filename”,“mode”,FILE * f):

    以mode模式打开地址为'filename'的文件,并将该文件与流f2关联。

    int fflush(FILE *f):

    将已写到缓冲区但未写入文件中的所有数据写入文件中。

    (2)二进制输入/输出

    fread(*ptr,size,n,FILE* f):

    从f中读取n个长度为size的对象,并放入ptr指向的数组中。

    fwrite(*ptr,size,n,FILE* f):

    从ptr指向数组中读取n个长度为size的对象,并写入f中。

    注意:要注意write与read的对象,读和写都是针对文件流f的。

    (3)非格式化输入/输出

    int fgetc/getc(FILE *f):

    返回流f的下一个字符,到达文件末尾/发生错误,则返回EOF。

    int fputc/putc(int c, FILE *f)

    将字符c输入到流f中。

    int fgets(char * s,int n,FILE *f):

    将f中下n-1个字符读入到数组s中。遇到换行符,则终止。

    int fputs(const char * s,FILE *f):

    将字符串s输出到流中。

    int unget(int c, FILE *f)

    将c写回到f中。

    (4)格式化输入/输出

    按一定格式转输出。

    scanf/fscanf/sscanf

    printf/fprintf/sprintf

    注意:不加f/s,则是格式字符串标准输入/出函数,输入/出到终端/屏幕;printf(const char *format,...)

    加s,输入/出到字符串中。sprintf(char *s,const char *format,...)

    加f,输入/出到文件流中。  fprintf(FILE *f,const char *format,...)

    (5)文件定位

    long ftell(FILE *f):

    返回当前指针位置。错误时返回-1L。

    int fseek(FILE *f,long offset,int origin):

    将当前流f指针位置设置到:origin后offset个字符处。origin有:SEEK_SET:文件起始位置;SEEK_CUR指针当前位置,SEEK_END:文件结束位置。

    void rewind(FILE *f)

    指针返回文件开始位置,相当于:fseek(f,0L,SEEK_SET)

    不常用:

    int fgetpos(FILE *f,*p)

    将指针当前位置记录到*p中,以供fsetpos函数使用。

    int fsetpos(FILE *f,const *p)

    指针位置指向*p。

    (6)错误处理与文件操作

    int feof(FILE *f)

    指示文件结束,一直返回0,结束时返回非0值。

    int ferror(FILE *f)

    如果设置了与f相关的错误指示符,则返回一个非0值。

    int remove(char *filename)

    删除指定位置的文件。

    int rename(const char *oldname,const char *newname)

    改文件名,否则返回非0值。

    FILE *tmpfile(void)

    建立临时文件,‘wb+'模式,在被关闭或程序正常结束时自动删除

    2. 分成两组,一组str开头,一组mem开头(该组函数在中也有定义,不是所有编译器都有)

    (1)str

    char * strcpy (char *dest, const char *src);

    将字符串src复制到字符串dest中(包括'\0'),返回dest

    char * strncpy (char *dest, const char *src,n);

    将src中的前n个字符复制到dest中,返回dest,不够n个则补‘\0'

    char * strcat (char *dest, const char *src);

    char * strncat (char *dest, const char *src,n);

    src连接到dest后;src 中前n个字符连接到dest后。

    int strcmp (const char *s1, const char *s2);

    int strncmp (const char *s1, const char *s2,n); 比较s1与s2,s1

    char * strchr (const char *s, int c);

    char * strrchr (const char *s, int c); 返回字符串s中第一次出现字符c的位置指针;返回字符串s中最后一次出现字符c的位置指针(c会转换成char)

    不常见 size_t   strcspn (const char *s1, const char *s2); char * strdup (const char *s); char * strerror(int errnum);

    (2)mem

    void *memcpy(void *s, const void *ct,n)

    将字符串ct中的前n个字符拷贝到s中,并返回s。

    void *memmove(s,ct,n)同上一函数,只是在对象重叠时仍能正确执行。

    void *memset(void *s,int c, n)

    将s中的前n个字符替换成c,并返回s。

    int memcmp(cs,ct,n)

    将cs前n个字符与ct进行比较,cs

    void *memchr(cs,c,n)

    返回指向c在cs中第一次出现的位置指针。

    3.一些数学函数

    求绝对值

    int abs (int x);

    long labs (long x);

    float fabs (float x):

    所有返回值均为double,三角函数角度用弧度表示,x,y均为double

    double acos (x);

    double asin (x);

    double atan (x);

    double atan2 (y, x): arctan(y/x)

    double tan (x);

    double tanh (x): 双曲正切

    double sin (x);

    double sinh (x);

    double cos (x);

    double cosh (x);

    double pow (x, y);//注意返回值类型为双精度型

    double sqrt (x);

    double ceil (x): 不小于x的最小整型数(向上取整)

    double floor (x): 不大于x的最大整型数(向下取整)

    double exp (x);

    double fabs (x);

    double log (x): ln(x)

    double log10 (x);

    double fmod (x, y): x/y的余数

    double ldexp (x, n): x*2^n

    double modf (x, double *ip): 将x分成整数与小数两部分,返回小数部分,整数部分放在*ip中

    double frexp (x, int *exp); 将x分成(0.5,1)之间的一个真分数和一个2的幂数,返回真分数,幂数放在exp中

    4.数值转换、内存分配等问题。

    int rand(void)

    产生一个0~32767之间的随机整数。

    指针名=(数据类型  *)calloc(n,size)

    分配n个长度为size的连续空间,并且将所有元素置零,返回首地址。

    指针名=(数据类型  *)malloc(n*size)

    分配n*size个字节的内存,并返回首地址。

    指针名p1=(数据类型  *)realloc(要改变内存大小的指针名p2,新的大小n)

    分配长度为n字节的空间,将p2值赋值到该内存中,返回首地址到p1.(改变p1指向地址的内存大小)

    void free(*p)

    释放p指向的内存(p为malloc,realloc,calloc所开辟的内存)

    void abort (void)

    使程序非正常终止。

    void exit(int status)

    使程序正常终止。

    总结

    以上所述是小编给大家介绍的C语言中常用的几个头文件及库函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    展开全文
  • 在get_line.h文件中声明并定义函数,如下:#include #define MAXLEN 1000int m_getline(char line[]){/* 输入字符串,返回数组长度 */int c,i;for (i = 0; i < MAXLEN && (c = getchar()) != EOF; ++i){...

    通过.h引入自定义函数

    1.在get_line.h文件中声明并定义函数,如下:

    #include #define MAXLEN 1000

    int m_getline(char line[]){

    /* 输入字符串,返回数组长度 */

    int c,i;

    for (i = 0; i < MAXLEN && (c = getchar()) != EOF; ++i)

    {

    line[i] = c;

    }

    line[i] = '\0';

    return i;

    }

    在另一个文件如main.c中,通过#include引入

    #include #include "get_line.h"

    #define MAXLEN 1000

    /* 练习1-18 删除行末尾的空格及制表符,并删除空格行 */

    int get_line_no_space(char line[], int len){

    int i;

    for (i = len-1; i >= 0; --i)

    {

    if (line[i] != '\t' && line[i] != ' ')

    {

    line[i] = '\0';

    break;

    }

    }

    if( i <= 0)

    printf("delete space line \n");

    return i;/* 返回剩余长度 */

    }

    void main(){

    char line[MAXLEN];

    int len;

    len = m_getline(line);

    get_line_no_space(line,len);

    printf("%s\n", line);

    }

    然后编译执行p_1_18.c即可。通过#include引入,其实是将 被引入文件内容,添加到当前源程序中

    ========= 解决遗留问题:将声明放在 .h中,实现放在 .c中 ==========

    将 函数声明放在get_line.h中,内容如下:

    #ifndef GET_LINE_H

    #define GET_LINE_H

    int m_getline(char line[]);

    #endif

    然后在同一目录下创建同名get_line.c文件,在其中实现该函数:

    #include # include "get_line.h" // 这里需要引用头文件

    #define MAXLEN 1000

    int m_getline(char line[]){

    /* 输入字符串,返回数组长度 */

    int c,i;

    for (i = 0; i < MAXLEN && (c = getchar()) != EOF; ++i)

    {

    line[i] = c;

    }

    line[i] = '\0';

    return i;

    }

    编译:因为 main.c 使用了 get_line.c 中的函数,故需要将 get_line.c 和 main.c一起编译,在控制台用gcc编译: gcc get_line.h main.c -o main,编译生成可执行程序main.exe:

    7529c322e8b9a61544796e45a098d223.png

    感谢@小白的学习之旅,@weixin_45336243,@轩辕招财 等人的帮助

    展开全文
  • C语言的头文件和宏定义详解

    万次阅读 多人点赞 2018-01-24 21:00:44
    之前对C语言的头文件和宏...这就是一个标准输入输出的头文件声明,头文件声明写在定义文件(后缀名.c的文件)的头部,并在定义文件中具体实现 #include #include &quot;mylib.h&quot; 这是两种声明头文件的

    之前对C语言的头文件和宏定义抱着一知半解的态度,现理清思路并以文字的形式整理出来,以供不时之需

    头文件

    头文件,顾名思义就是定义在C语言文件头部的那一坨东西

    #include <stdio.h>
    

    这就是一个标准输入输出的头文件声明,头文件声明写在定义文件(后缀名.c的文件)的头部,并在定义文件中具体实现

    #include <stdlib.h>
    #include "mylib.h"
    

    这是两种声明头文件的方法,其中尖括号表示 “到环境指定的目录去引用”,而双引号表示 “首先在当前目录查找,然后在到环境指定的目录去引用”。在C标准库中每个库函数都在一个头文件中声明,可以通过第一种方式引用。

    头文件的格式

    #ifndef _MYLIB_H_
    #define _MYLIB_H_
    ...
    #endif
    
    

    第一句“ifndef”意思是“如果在导入头文件的文件中之前没有导入该头文件就编译下面的代码”,该句的作用是防止重复导入
    第二句“define”是“宏定义”的意思,表示以下代码是的头文件主体部分
    最后来一句“endif”和“ifdef”首尾呼应
    其中“ifndef”和“define”后面跟的是相同的“标识”,通常和头文件名相同,所有字母均大写并把点号改为下划线即可

    #include "mylib.h"
    

    看到这句话后编译器会把该头文件“mylib.h”复制粘贴到导入的文件中,之后你就可以使用头文件中定义的常量和结构定义了

    显然恰当地使用头文件有利于更好的组织文件和项目

    提请注意
    1、头文件只是声明,不占内存;在编译时会被合并到源文件
    2、头文件和其它C语言文件一样可以引用其它文件,可以写预处理块但是不要出现具体语句
    3、可以在头文件中定义宏函数,其本质上还是一个声明
    4、各个头文件相互独立,标准头文件之间不存在相互包含关系
    5、头文件可以重复引用,但是相当于只导入一次
    6、 从C语法角度讲完全可以在头文件中写任何东西,因为#include在作用上和Ctrl-C + Ctrl-V等效——但是这样时不推荐的;头文件的作用就是更好的组织代码

    何时使用
    1、结构体的定义
    2、函数声明,变量声明,宏定义,常数定义等
    3、当源代码不便公布时使用头文件提供接口
    4、在大项目中需要多文件联合编译

    小栗子

    #ifndef _NODE_H_
    #define _NODE_H_
    
    typedef struct _node{
    	int value;
    	struct _node* next;
    } Node;
    
    #endif
    
    #include "node.h"
    int main(int argc, char const argv[])
    {
    	Node* p = (Node*)malloc(sizeof(Node));
    	...
    	return 0;
    }
    

    常用头文件

    stdio.h 标准输入输出
    stdlib.h 标准常用库
    string.h 字符串函数库
    math.h 数学库
    ctype.h 字符函数库
    time.h 时间库
    windows.h 微软视窗库


    宏定义

    宏定义是C语言提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。宏定义和操作符的区别是:宏定义是替换,不做计算,也不做表达式求解。“宏定义” 也称 “宏替换”、“宏”。

    define PI 3.1415926
    

    这就是一个简单的宏,在程序的预处理阶段宏名会被替换为后面的字符串

    传入参数的宏

    1、 #:字符串化操作,即将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串,使用时置于宏定义体中的参数名前,如:

    #define func(para)  #para
    ...
    char str[] = func(hello); //被展开为:char str[]="hello"
    

    说明:如果传入的参数之前有空格则忽略之,如果参数之间有多个空格则在连成字符串时只算一个

    2、 #@:字符化操作,即将宏定义传入的参数名转换为用一对单引号扩起来的参数名字符串,使用时置于参数名前,如:

    #define fun(pa) #@pa
    char a = fun(a); //被展开为char a='a';
    

    3、 ##:参数连接操作,即将宏定义的多个形参连接成一个实际参数,如:

    #define COMMAND(a, b) a##b
    ...
    COMMAND(1, 2); //相当于12
    CMOOAND(ac, b); //相当于acb
    

    4、\:当前行继续操作,实际上是对换行符转义,如:

    #define LOOP(FROM, TO, CONTENT)\
    for (int i = FROM; i < TO; i++) {\
        CONTENT\
    }
    

    5、 __VA_ARGS__:变长参数操作,即可以接受不定个数的参数,如:

    #define eprintf(...) fprintf (stderr, __VA_ARGS__)
    eprintf ("%s:%d: ", input_file, lineno)
    //==>  fprintf (stderr, "%s:%d: ", input_file, lineno)
    

    为什么要使用宏定义

    简而言之,使用宏定义可以提高代码的可读性。具体的说,可以减少magic number的使用,并且可以做一些方便的替换,如下面的代码:

    #define MALLOC(n, type) (type*)malloc((n) * sizeof(type))
    

    使用时,int *p=MALLOC(10, int); 即可

    宏的规范写法
    1、宏名大写
    2、宏定义语句末尾不加分号
    3、宏函数的形式参数不加类型

    另外宏定义需要注意的
    1、宏定义可以嵌套
    2、宏定义不能出现在字符串的“”中
    3、宏定义不分配内存,变量定义才分配内存
    4、宏定义只是简单的替换,而且是直接对源码的字符串替换,如下面的宏定义就不能很好的表达求平方函数:

    #define sqrt(x) x * x
    ...
    int y = sqrt(1 + 2); //y = 1 + 2 * 1 + 2 = 5 ≠9
    

    这时候加上括号就好了:

    #define sqrt(x) (x) * (x)
    ...
    int y=sqrt(1+2); //y = (1 + 2) * (1 + 2) = 9
    

    5、宏函数和自定义函数相比,效率更高但是安全性低且会使编译生成的目标文件变大;宏函数没有分配和释放栈帧、传参、传返回值等一系列工作,适合那些简短并且频繁调用的函数,但是对于递归则不推荐使用宏



    (补;GCC 的一个小技巧)

    #include <stdio.h>
    
    #define GREATER(a, b) ({\
    	int ret;\
    	if (a > b) ret = a;\
    	else ret = b;\
    	ret;\
    })
    
    
    int main(void)
    {
    	printf("1 and 2, which is greater? %d\n", GREATER(1, 2)); //2
    	printf("6 and 5, which is greater? %d\n", GREATER(6, 5)); //6
    }
    

    可以把define当简陋的的函数返回来用。注意到这是一个gcc扩展,MSVC不能用哦。

    #define WHATEVER() ({\
    	sd::cout << "WHATEVER" << std::endl;
    }) // 报错,因为没有返回值
    
    #define WHATEVER() ({\
    	std::cout << "WHATEVER" <<std::endl;\
    	int datafield = 1024;\ // 用数据冒充返回值,这样就不会报错辽
    }
    

    如果是一般的void类型的函数,也就是不带返回值的函数(in other words, 子例程、代码块……),我们更常用的是用一个do-while(0) 括起来,非常简单,可惜就是不能带返回值。

    #include <iostream>
    
    #define WHATEVER() do \{
    	std::cout << "whatever" << std::endl;\
    } while (0)
    
    
    int main(void)
    {
    	WHATEVER(); // "whatever"
    }
    

    (完)

    展开全文
  • c语言中fgets函数返回值,什么情况下返回空指针。c语言中fgets函数返回值,什么情况下返回空指针。如题fgets 是系统输入函数,从文件流读入一行字符串,含空格键等,函数原型是: char * fgets ( char * str, ...
  • C语言符合标准的头文件#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include //定义...
  • 12个我正在尝试创建一个简单程序,使用良好编程实践从C中获取用户的输入.它由Input.hpp,Input.cpp和main.cpp组成.即使我使用ifndef来防止这种情况,我仍然会收到多重定义错误.Input.hpp#ifndef In...
  • 常用的头文件如下  #include //设定插入点  #include //字符处理  #include //定义错误码  #include //浮点数处理  #include //文件输入/输出  #include //参数化输入/输出  #include //数据流输入...
  • #include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出 #include //数据流输入/输出#include //定义各种数据类型最值常量 #...
  • C语言的头文件的使用

    2019-04-22 16:32:38
    相信学过C语言的人都知道头文件的使用,没有话就没办法对相关操作, 这里都文件是另外一种,因为我们在编程时候都要有这样一个思维,那就是模块思维,模块方式可以减轻代码【乱】,我们平时一个...
  • C语言风格的头文件(带.h): #include<stdio.h> //输入/输出函数 #include<string.h> //字符串处理 #include<stdlib.h> //杂项函数\ 内存分配 C++风格的头文件(无.h): #include //数据流输入...
  • 不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货:1.:定义了输入输出函数、类型以及宏,函数几乎占了标准...
  • C语言头文件输入系统

    2010-10-10 18:11:33
    进行头文件的输入 ,查询 删除 排序 等功能 添加 查找
  • 单片机C语言中的一些常用头文件(函数原形的头文件、字符类型库、浮点运算库、标准输入输出库等等)
  • C语言的头文件

    2007-01-10 11:49:00
    http://zhidao.baidu.com/question/9886925.html传统 C++ #include //设定插入点 #include //字符处理 #include //定义错误码 #include //浮点数处理 #include //文件输入/输出 #include //参数化输入/输出 #...
  • c语言头文件

    2021-03-31 23:40:06
    c语言头文件 assert.h:提供一个assert的宏定义 ...inttypes.h:提供整数输入的各种转换宏 iso646.h:定义了一批C语言常见运算符的可选拼写 limits.h:专门用于检测整型数据数据类型的表达值范围 locale.h:声明了C语
  • C语言常用头文件

    2020-02-20 19:40:06
    output"(标准输入输出),如用到标准输入输出函数时,就要包含它。函数如 getchar(),putchar(),scanf(),printf(),gets(),puts()等等 stdlib.h standard library标准库 常用函数如malloc()、calloc()、realloc...
  • 1.C语言符合标准的头文件 #include //设定插入点 #include //字符处理 #include //定义错误码 #include //浮点数处理 #include //文件输入/输出 #include //参数化输入/输出 #include //数据流输入/...
  • 不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货:1.:定义了输入输出函数、类型以及宏,函数几乎占了标准...
  • C语言stdio头文件解析

    千次阅读 2018-02-02 22:01:23
    stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。 三个变量: 1:size_t 2:FILE :这是一个适合存储文件流信息对象类型。 3:fpos_t :这是一个适合存储文件中任何位置对象类型。...
  • c语言笔记整理: #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //定义浮点数 #include <fstream.h> //...
  • 整理一下常用头文件,毕竟IDE代码不全功能不是那么顺畅 表 常用头文件及说明 头文件 说明 stdio.h 标准输入输出函数等 string.h strlen()函数等 ...
  • 不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货: 1.:定义了输入输出函数、类型以及宏
  • C语言 头文件源文件及include包含指令 1- 头文件:(head),所以文件后缀是.h,head简称。 头文件是源文件辅助文件,一般把一些变量,函数定义到头文件,而函数实现放在源文件。头文件主要解决可以拆分大...
  • C语言头文件总结

    2018-03-15 11:48:27
    C语言头文件总结#include&lt;stdio.h&gt;:standard input&amp;output标准输入输出头文件#include&lt;stdlib.h&gt;:standard library标准基本函数库,包涵C,C++最常用系统函数#include&lt...
  • C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include //定义各种数据类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,043
精华内容 817
关键字:

c语言输入的头文件

c语言 订阅