![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 56
c语言学习笔记
李穆
这个作者很懒,什么都没留下…
展开
-
C语言创建目录(文件夹)之mkdir
mode方式:可多个权限相或,如0755表示S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH。原创 2023-08-10 17:25:34 · 3632 阅读 · 0 评论 -
C语言判断文件是否存在之stat、fopen、access
头文件 sys/stat.h unistd.h。mode说明,可以加减,最高777。结构体struct stat说明。头文件 stdio.h>头文件:unistd.h。原创 2023-08-10 16:23:45 · 759 阅读 · 0 评论 -
程序进制换算
进制介绍,二进制、八进制、十进制、十六进制互相换算,最详细版原创 2023-05-10 15:48:22 · 1174 阅读 · 0 评论 -
C语言常识
C语言关键字特殊符号转意整数常量示例类型大小limits.h中的常量printf类型printf修饰符printf标志符原创 2022-07-06 08:26:35 · 58 阅读 · 0 评论 -
makefile
学习Makefile笔记,看着英文官方文档和一些资料学习,英文水平能力有限,如有看官看到,有错误或者不明确的请留言或者私信。一、Makefile简介make需要一个配置文件makefile来告诉make需要做什么,一般,makefile文件会指定make如何编译和链接一个程序。make重新编译编辑器时,必须重新编译每个更改的C源文件。如果头文件已更改,则必须重新编译包含头文件的每个C源文件以确保安全。每次编译都会生成一个与源文件相对应的目标文件。最后,如果重新编译了任何源文件,则必须将所有目标文件(无论原创 2022-05-03 15:07:46 · 648 阅读 · 0 评论 -
make编译
makefile文件内容如下:edit : main.o kbd.o command.o cc -o edit main.o kbd.o command.omain.o : main.c defs.h cc -c main.ckbd.o : kbd.c defs.h command.h cc -c kbd.ccommand.o : command.c defs.h command.h cc -c command.c.PHONY : cleanclean : rm edit main.o原创 2022-03-25 00:26:09 · 280 阅读 · 0 评论 -
C语言可变参数
stdarg.h头文件为函数提供了函数可以接受可变数量的参数。必须按照下面步骤:1、提供一个使用省略号的函数原型;2、在函数定义中创建一个va_list类型的变量;3、用宏把该变量初始化为一个参数列表;4、用宏访问参数列表;5、用宏完成清理工作。例如:void func2(int n, ...);void func2(const char * s, int k , ...);省略号的前一个参数起着特殊的作用,标准用parmN这个术语来描述该形参。传递给该形参的实际参数是省略号部分代表的参原创 2022-03-20 20:32:44 · 395 阅读 · 0 评论 -
string.h库中的memcpy()和memmove()
memcpy()和memmove()可以处理任意类型的数组。void *memcoy(void * restrict s1, const void * restrict s2, size_t n);void *memmove(void *s1, const boid *s2, size_t n);这俩个函数都从s2指向的位置拷贝n字节到s1指向的位置,而且都返回s1的值。所不同的是,memcpy()的参数带关键字restrict,即么memcpy()假设俩个内存区域之间没有重叠;而memmove不作原创 2022-03-20 17:59:28 · 269 阅读 · 0 评论 -
C语言断言库
assert.h头文件支持的断言库是一个用于调试程序的小型库。它由assert()宏组成,接收一个整形表达式作为参数。如果表达式求值为假(非零),assert(0宏就在标准错误流(stderr)中写入一条错误信息,并调用abort()函数终止程序(abort()函数在stdlib.h头文件中)。assert()宏是为了标识出程序中某些条件为真的关键位置,如果一个具体条件为假,急用assert()语句终止程序。1、用法#include <stdio.h>#include <stdlib原创 2022-03-20 17:05:55 · 441 阅读 · 0 评论 -
C语言通用工具库之qsort()函数
一、qsort()函数对于较大型的数组而言, “快速排序”方法是最有效的排序算法之一。他把数组不断分成更小的数组。首先把数组分成俩部分,一部分的值都小于另一部分的值,直到排好序。void qsort(void *base, size_t nmenb, size_t size, int(*compar) (const void *, const void *));第一个参数是指针,指向待排序数组的首元素。ANSI C允许把指向任何数据类型的指针强制转换成指向void指针。第二个参数是待排序的数量。原创 2022-03-20 16:45:21 · 546 阅读 · 0 评论 -
C语言通用工具库之exit()和atexit()函数
一、exit()和atexit()函数exit()退出程序。在main()函数返回系统时将自动调用exit()函数。atexit()函数通过退出时注册被调用的函数提供这种功能,atexit()接受一个函数指针作为参数。原创 2022-03-20 16:44:46 · 769 阅读 · 0 评论 -
C预处理器
一、明示常量: #define#define预处理器指令和其他预处理器一样,以#号作为一行的开始。ANSI和后来的标准都允许#前面有空格或者制表符,二千还允许在# 和指令的其余部分有空格。旧版本的C 要求指令从一行最左边开始,而且#指令其余部分之间不能有空格。指令可以出现在源文件的任何地方,其定义从指令出现的地方到改文件结尾有效。可以使用#define来定义明示常量(也叫符号常量) #include <stdio.h>#define TWO 2 /* TWO 2 */#define原创 2022-03-13 19:18:15 · 764 阅读 · 0 评论 -
C语言对齐特性
C11的对齐特性比用位填充字节更自然。在这种上下文中,对齐指的是如何安排对象在内存中的位置。例如,为了效率最大化,系统可能把一个double类型的值储存在4字节内存地址上,但却允许吧char储存在任意地址。_Alignof运算符给出一个类型的对齐要求,在关键字后面的圆括号中写上类型名即可:size_t d_align = _Alignof(float);假设d_align 的值是4,一是float类型对象的对齐要求是4.也就是说,4是储存该类型值相邻地址的字节数。一般,对齐值都应该是2的非负整数次幂原创 2022-03-08 21:37:39 · 955 阅读 · 0 评论 -
C语言位字段
操控位的第二种方法是位字段。为字段是一个signed int或unsigned int类型变量中的一组响铃的位(C99和C11新增了——Bool类型的位字段)。位字段通过一个结构声明来建立,该结构声明为每个字段提供标签,并确定该字段的宽度。struct{ unsigned int autfd : 1; unsigned int bldfc : 1; unsigned int undln : 1; unsigned int itals : 1;} prnt;prnt包含4个1位的字段。由于每原创 2022-03-08 21:16:42 · 835 阅读 · 0 评论 -
C语言按位运算符
一、按位逻辑运算符1、二进制反码或按位取反: ~一元运算符 ~ 把1变为0,把0变为1。例子:~(10011010) // 表达式01100101 // 结果newval = ~val; // val的值不会变,val取反赋值给newval2、按位与: &二元运算符&,通过逐位比较来个运算对象。,生成一个新值。对于每个位,只有来个运算对象中相应的位都为1时,结果才为1.3、按位或: |二元运算符|,通过逐位比较来个运算对象。,生成一个新值。对于每个位,只有原创 2022-03-08 21:07:21 · 5213 阅读 · 0 评论 -
C语言二进制数、位、字节、八进制十六进制
一、二进制数、位和字节1、二进制数以为基地表示的数字称为二进制数。二进制中的2和十进制中的10作用相同。二进制数1101可表示为:1*23+1*22+0*21+1*20以十进制数表示1*8+1*4+0*2+1*1 = 13二进制系统可以把任意整数(如果有足够的位)表示为 0和1的组合。数字计算机通过关闭和打开状态的组合来表示信息,分别是0和1。2、二进制整数通常1字节包含8位。C语言用字节(byte)表示储存系统字符集所需的大小。所以C字节可能是8位、9位、16位或其他值。描述存储芯片和数据原创 2022-03-02 21:36:43 · 8023 阅读 · 2 评论 -
C语言联合简介union
联合是一种数据类型,它能在同一个内存空间储存不同的数据类型(不是同时储存)。典型的用法是,设计一种表以储存即无规律、事先也不知道顺序的混合类型。使用联合的数组,其中的联合都大小相等,每个联合可以储存各种数据类型。union hold{ int digit; double bigfl; char letter;};// 定义与hlod类型相关的变量union hold fit; // hold类型的联合变量union hold save[10]; // 内含10个hold类型联合变原创 2022-02-22 23:30:52 · 427 阅读 · 0 评论 -
C语言枚举类型enum
可以用枚举类型声明符号名称来表示整形常量。使用enum关键字可以创建一个新“类型”并指定可具有的值。enum spectrum{red, orangemyelloew};enum spectrum color;在枚举声明中,可以为枚举常量指定整数值enum levels {low = 100, mediun = 500, high = 2000};如果只给一个枚举常量赋值,没有对后面的枚举常量赋值,那么后面的常量会被赋予后续的值。enum feline {cat = 0, lynx = 10原创 2022-02-22 21:29:00 · 401 阅读 · 0 评论 -
C语言结构体
一、结构体声明struct student{ int age; char name[100];};struct student{ int age; char name[100];} stu1; /* 声明的右花括号后跟变量名 *//* 无结构标记 */struct { int age; char name[100];}student;二、定义结构体变量struct student st1;三、初始化结构struct student st1 ={ 12; z原创 2022-02-22 20:38:24 · 216 阅读 · 0 评论 -
C语言文件输入输出
一、文件1、文件文件通常是磁盘或固态硬盘上面的一段已命名的储存区。所有文件的内容都是以二进制形式(0或1)储存。2、文本模式和二进制模式文本文件:文件最初使用二进制编码(ASCII或者Unicode)的字符表示文本,改文件就是文本文件,其中包含文本内容。二进制文件:如果文件中的二进制代表机器语言或者数值数据(使用相同的内部表示,假设,用long或者double类型的值)或图片或音乐编码,改文件就是二进制文件,其中包含二进制文件。C语言提供俩种访问文件的途径:二进制模式和文本模式。二进制模式中,程原创 2022-02-21 18:07:30 · 1613 阅读 · 0 评论 -
C语言存储类别、链接和内存管理
一、存储类别C提供了多种不同类型或存储类别在内存中储存数据。从硬件来看,被储存的值都占用一定的物理内存,C语言把这样的一块内存称为对象。对象可以储存一个或多个值。int num = 0;上面声明创建了一个名为num的标识符。标识符是一个名称,标识符可以用来指定特定对象的内容。可以用存储期描述对象,所谓存储期是指对象在内存中保留了多长时间。标识符用于访问对象,可以用于作用作用域和链接描述边师傅,标识符的作用域和链接表明了程序的那些部分可以使用它。不通的储存类别具有不同的存储期、作用域和链接。1、原创 2022-01-12 21:24:23 · 151 阅读 · 0 评论 -
C语言随机函数和静态变量
rand()函数可以生成随机数。实际上,rand()是“伪随机数生成器”,意思是可预测生成数字的实际序列,数字在其取值范围呢均匀分布。#include <stdio.h>int main(){ int num = 0; num = rand(); printf("rand[%d]\n", num); return 0;}...原创 2022-01-12 21:24:08 · 167 阅读 · 0 评论 -
C语言字符串函数
一、strlen()函数strlen()函数用于统计字符串的长度。#include <stdio.h>#include <string.h>int main(){ char *p = "hello world"; int len = strlen(p); printf("p strlen[%d]\n", len); return 0;}二、strcat()函数strcat()用于原创 2022-01-04 22:35:29 · 1969 阅读 · 0 评论 -
C语言字符串
一、表示字符串和字符串I/O字符串是以空字符(\0)结尾的插入类型数组。字符串常量属于静态储存类别。字符串储存在静态储存区。1、字符串数组char *str[4];二、字符串输入原创 2022-01-04 21:25:11 · 268 阅读 · 0 评论 -
数组和指针
一、数组1、初始化数组int i[3] = {1,2,3}只读数组 const int i[3] = {1,2,3}初始化指定器 int arr[6] = {[5] = 221}; //arr[5] = 2122、给数组元素赋值i[1] = 1;3、数组边界4、指定数组大小二、多维数组三、指针和数组数组名是数组首元素的地址。char ch[10];ch和&flizny[0]都表示数组首元素的内存地址,俩者都是常量。#include <stdio.h>//原创 2022-01-01 21:46:44 · 555 阅读 · 0 评论 -
C语言字符输入、输出和输入验证
一、单字符I/O:getchar()和putchar()getchar()和putchar()和stdio.h头文件相关联,getchar()和putchar()都不是真正的函数、他们被定义为供预处理器使用的宏。#include<stdio.h>int main(){ char ch; printf("请输入(#结束):"); while( (ch = getchar() ) != '#' ) { putchar(ch); }原创 2022-01-01 19:43:26 · 818 阅读 · 0 评论 -
C语言控制语句:分支和跳转
一、if语句if( expression ){ statement}expression为真(非0)执行statement,否则跳过statement。#include<stdio.h>int main(){ if( 0 ) { printf("真\n"); } return 0;}二、if else 语句1、if else 语句#include<stdio.h>int main()if( expr原创 2021-12-06 19:56:23 · 616 阅读 · 0 评论 -
ctype.h系列的函数:判断字符类型
C语言判断数字、字母、空白字符(空格、换行符、换页符、回车符、垂直制表符、水表制表符或其他本地化定义的字符)、控制字符等函数。函数名如果是下列参数时,返回值为真isalnum()字母或者数字isalpha()字母isblank()标准的空白字符(空格、水平制表符或换行符)或其他任何本地化指定为空白的字符iscntrl控制字符,如Ctrl+B等isdigit数字isgraph除空格之外的任意可打印字符islower小写字母ispri原创 2021-12-06 19:15:54 · 684 阅读 · 0 评论 -
C控制语句:循环
一、while循环while(expression){ 语句;}expression为真,非0,循环。每次循环称为一次迭代。所有的非零值都为真。二、新的_Bool类型_Bool类型称为布尔类型,只能储存1(真)和0(假)。三、关系运算符和表达式四、不确定循环和计数循环不确定循环是指在测试表达式为假之前,预先不知道要执行多少次循环。计数循环,在循环之前就知道循环多少次。五、for循环。for(int i = 0; i < 10; i++){ 语句;}六、其它赋值运算原创 2021-12-02 20:48:04 · 495 阅读 · 0 评论 -
运算符、表达式和语句
一、基本运算符C用运算符表示算数原酸。1、赋值运算符:=符号 “=” 被称为赋值运算符i = 100; 读作“把值100赋给变量i”。左值 = 右值;可修改的左值(对象定位值)必须是是变量名,用于标识特定数据对象的名称或者表达式,右值指的是能赋值给可修改左值的量,且本省不是左值。赋值表达式语句的目的是把值储存袋内存位置上。用于储存值的数据储存区域统称为数据对象。2、加法运算符:+加法运算符用于加法运算,是其俩侧的值相加。3、减法运算符:-减法运算符用于减法运算,时期左侧的数减去右侧的数原创 2021-11-30 21:53:35 · 644 阅读 · 0 评论 -
C语言字符串和格式化输入\输出
一、char类型数组和null字符串C语言没有专门用于储存字符串的变量类型,字符串都储存在char类型的数组中。数组有连续的储存单元组成,字符串中的字符别储存在相邻的储存单元中,每个单元储存一个字符。结尾是一个‘\0’,这是空字符,是非打印字符。C语言字符串一定是以’\0’结尾,数组长度要比实际存放的字符数大1。输入和打印字符串#include<stdio.h>int main(){ char name[100]; printf("What is your name?\原创 2021-11-30 20:07:29 · 817 阅读 · 0 评论 -
C语言数据
一、基础数据类型1、基础数据类型C语言基础类型一般来说只有int、char、double,float;类型说明储存大小长度定义int整形2 或 4 字节[-32768,32767]int i;short int2字节短整型[-32768,32767]short int i; 或者 shorti i;long int长整形4 字节[-2147483648,2147483647]long int i; 或者 long i;long lo原创 2021-11-28 23:05:52 · 512 阅读 · 0 评论 -
C语言介绍
C语言有各种标准,有C99、C11现在好像都是最新的了,各种电脑或者服务器可以有差别。name.c是源代码name.o是目标代码name.exe(Windows)或者name(Linux)是可执行文件。源代码文件中是C语言写在.c文件里面。目标代码文件包含着机器语言代码,它并不需要是完整的程序代码。可执行文件包含着组成可执行程序的全部机器语言代码。...原创 2021-11-28 20:56:05 · 225 阅读 · 0 评论 -
C 语言祖传的Hello World
工作俩年有余,C语言还是有点东西不太清楚,遂决定重新学习。记博客以便查阅,各位看官大人也可以讨论,欢迎交流。让我们先来到程序员祖传的Hello World环节。#include<stdio.h>int main() { printf("hello world!\n"); return 0;}...原创 2021-11-28 20:32:11 · 304 阅读 · 0 评论 -
Linux编译c语言文件的脚本
在linux使用vim练习c语言,需要用gcc编译.c文件,写个脚本简化一下过程。if [ $# -eq 0 ];then echo "本脚本主要用于一次编译并执行c语言文件" echo "./gcco.sh test" echo "上面命令编译test.c生成test.o和test,并执行test" exitficmain=$1echo $cmainfilepath=`pwd`#echo "当前路径"$filepathfile原创 2021-08-06 19:43:30 · 679 阅读 · 0 评论 -
C语言读写文件之getc putc
一、fopen()函数fopen()函数声明在stdio.h头文件,第一个参数打开包含该文件名的字符串的地址,第二个参数是用于指定文件打开模式的一个字符串。二、getc()和putc()函数ch = get(fp); 从指针fp指定的文件中会的一个字符。putc(ch,fp); 将字符写到fp 指定的文件中。三、fclose() 函数fclose(fp) 函数关闭由指针fp指定的文件,同事根据需要刷新缓冲区。建议检查是否关闭了文件。如果成功关闭,返回0,否则返回EOF...原创 2021-01-31 19:57:57 · 4777 阅读 · 1 评论