![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C编程知识
文章平均质量分 61
在摸索中前进
计算机软件的入门水平,希望不断进步。
展开
-
指针内存分配
1、一维指针内存分配。//作数组使用时int *p = NULL; //保存int类型数据int n = 7; //数组长度p = (int *)malloc(sizeof(int)*n);int i;for(i=0; i<n; i++) p[i] = 0;free(p); //释放2、指针数组内存分配int n = 6;int *p[n]; //保存int指针类型数据的数组原创 2016-04-06 10:02:52 · 4223 阅读 · 0 评论 -
linux下c编程条件变量
头文件 pthread.hstruct cangku 中定义了空间大小为7的 char 数组。读游标、写游标。非空、非满条件变量。互斥锁。游标均采用从0 1 2 3 4 5 6 0 1 2...的移动方式。仓库初始化时,读、写游标被置零。条件变量使用函数pthread_cond_init(¬empty,NULL)进行初始化。本次示例代码中使用了消费者和生产者这个经典的问题。原创 2016-04-30 19:41:44 · 2604 阅读 · 0 评论 -
linux下c编程socket通信
1、服务器端建立socket。int sockfd = socket(AF_FAMILY,SOCK_STREAM,0);绑定IP和端口。bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr));开启listen。listen(sockfd,5);循环accept。int newfd = accept原创 2016-05-03 13:30:03 · 2540 阅读 · 0 评论 -
linux下c编程之UDP
1、服务器端创建socket。绑定服务器端口和IP。接收数据、发送数据。发送数据需要根据接收数据的地址或者自己指定发送地址。#include #include #include #include #include #include #include int main(){ int sockfd,tmplen; struct sockaddr_in sad原创 2016-05-03 14:27:37 · 2398 阅读 · 0 评论 -
fgets的理解
//从标准输入读取char buf[size];fgets(buf, size, stdin);当使用这个函数来读取一行字符串时分两种情况考虑。 1、将输入字符串+最后的换行符总长度记为len。如果len小于size,buf[]从0到len-1位置依次存储字符串+换行符。buf[]的len位置存储‘\0’。2、如果len大于或等于size。那么buf[]的size-1位置存储‘\0’,size原创 2016-04-20 20:30:25 · 2531 阅读 · 0 评论 -
使用assert.h简介
1、assert的作用int i = 0;assert(i == 0);printf("hello_world\n");当括号中的表达式为true时,程序继续执行下一条语句。当括号中的表达式为false,程序将直接终止运行,并输出相应信息,如终止所在行等。2、取消assert的功能assert函数一般用在代码调试,在程序真正运行时并不希望总是出现程序异常终止的现象。原创 2016-05-08 13:09:02 · 2671 阅读 · 0 评论 -
使用errno.h示例
1、errno.h简介errno = 0;sqrt(-1.0);if(errno == EDOM) perror("EDOM error : ");首先将errno置零。然后给出可能出错的语句。最后检查是否出错。EDOM为其中一个错误类型,不同计算机的错误类型定义可能会不一致。只能够检测出计算机上已经定义的错误类型。2、perror函数简介头文件:stdio原创 2016-05-08 13:51:53 · 2944 阅读 · 0 评论 -
使用ctype.h示例
1、常用函数isalpha : 是否为26个英文字母,包括大小写形式。isdigit : 是否为十进制数字,0-9。isxdigit : 是否为十六进制数字,0-9,a-f。isalnum : 是否为字母或数字,a-z,A-Z,0-9。isupper : 是否为大写字母,A-Z。islower : 是否为小写字母,a-z。isspace : 是否为空格,包括空格、\n、原创 2016-05-08 14:28:14 · 2897 阅读 · 0 评论 -
math.h简介
1、三角函数double cos(double x) : 计算x的cos值(x的单位为弧度)double sin(double x) : 计算x的sin值(x的单位为弧度)double tan(double x) : 计算x的tan值(x的单位为弧度)double acos(double x) : 计算x的acos值,x的范围[-1,1],返回值范围[0,PI](PI为原创 2016-05-08 16:58:50 · 3236 阅读 · 0 评论 -
limits.h
CHAR_BIT : 一个字节中的比特数INT_MIN : int类型最小,-32767INT_MAX : int类型最大,32767UINT_MAX : 无符号int类型最大值,65,535LONG_MIN : long类型最小,-2,147,483,647LONG_MAX : long类型最大,2,147,483,647ULONG_MAX : 无符号long类型最大,4原创 2016-05-08 17:21:16 · 2311 阅读 · 0 评论 -
setjmp.h
1、示例代码#include #include int main(){ jmp_buf j;//保存当前环境 if(setjmp(j) == 0) { printf("setjmp初始化\n"); longjmp(j,1); printf("不会执行这句话\n"); }原创 2016-05-09 13:42:26 · 3495 阅读 · 0 评论 -
signal.h和stdarg.h
1、signal.h#include #include void sig_int(int sig);//定义信号处理函数,sig为信号类型int main(){ signal(SIGINT,&sig_int);//指定信号处理函数 printf("我在执行别的内容\n"); raise(SIGINT);//软件产生信号,使用硬件产生信号原创 2016-05-09 14:34:29 · 2352 阅读 · 0 评论 -
linux线程pthread互斥锁
需要引用头文件 pthread_create(&thread1,NULL,(void *)&dealfunction,NULL); //创建线程thread1声明格式:pthread_t thread1。NULL:表示线程属性的指针,可默认为NULL。dealfunction声明格式:void dealfunction()。返回值可以为其它,可以有参数。NULL:处原创 2016-04-30 16:42:16 · 3782 阅读 · 0 评论 -
进程通信之共享内存与信号量
信号量:通过设置一个值val大于0的整数,表示当前最多允许val个进程进入临界区。同时定义P函数,函数中对val进行减1操作,每当一个进程进入临界区时执行一次P函数,当val为0时当前进程等待。定义V函数,对val进行加1操作,当一个进程离开临界区执行V函数。 结构如下:P();//临界区V();linux下封装了对信号量的操作函数semget semop semctl需要引用头文件#incl原创 2016-04-30 14:41:34 · 2640 阅读 · 0 评论 -
linux进程的一生形象比喻
首先,随着fork函数的成功执行,一个新的子进程诞生,但此时他还只是父进程的一个克隆,从父进程那里获得数据段和堆栈段的复制。然后,随着exec函数族的执行,新进程脱胎换骨,离家独立,开始独自执行一个全新的程序,并完全替代了原有的父进程。人有生老病死,进程也一样,它可以是自然死亡,即运行到main函数最后一个“}”,从容的离我们而去。也可以是自杀,自杀有两种方式,一种是调用exit函数,一种是在mai原创 2016-04-26 12:01:53 · 2900 阅读 · 0 评论 -
linux常用信号列表
SIGHUP:本信号在用户终端结束时发出,通常是在终端的控制进程结束时,通知同一会话期内的各个作业,这时他们与控制终端不在关联。比如,登录linux时,系统会自动分配给登录用户一个控制终端,在这个终端运行的所有程序,包括前台和后台进程组,一般都属于同一个会话。当用户退出时,所有进程组都将收到该信号,这个信号的默认操作是终止进程。此外对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。原创 2016-04-26 12:54:16 · 4380 阅读 · 0 评论 -
读取文件
1、按字符读取(fgetc)#incldue <stdio.h>FILE *f = fopen("text.txt", "r");if(f == NULL) return;int ch;while((ch = fgetc(f)) != EOF) //注意结束条件{ printf("%c", ch);}fclose(f);2、按行读取(fgets)#include <std原创 2016-04-06 11:07:28 · 2305 阅读 · 0 评论 -
Windows下C语言单线程socket通信
编程环境:CodeBlocks + MinGW1、服务器端#include <stdio.h>#include <string.h>#include <winsock32.h> // 函数定义头文件,调用API#pragma comment(lib,"wsk2_32.lib") // Windows socket APIint main(){ // 初始化WSA WSADATA原创 2016-04-13 20:37:07 · 5009 阅读 · 0 评论 -
linux进程通信之消息队列
原文地址http://blog.csdn.net/ljianhui/article/details/10287879十分感谢作者的文章,让我可以较容易的理解消息队列的使用。一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题转载 2016-04-27 21:04:42 · 2347 阅读 · 0 评论 -
进程通信消息队列代码及一些注意点
发送方#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/msg.h>#define MAXLENGTH 80struct msg_st{ long msgtype; char text[MAXLENGTH];};int main(){ int msgid,i; cha原创 2016-04-27 22:03:07 · 2572 阅读 · 0 评论 -
time.h
1、struct tm结构体struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */ int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */ int tm_原创 2016-05-10 14:35:37 · 2616 阅读 · 0 评论 -
stdlib.h
#include #include #include //测试内存分配void testmem();//测试随机数void testrand();//测试环境变量void testenv();//测试字符串转化void testchar();//测试system abort exitvoid testthree();//测试2分查找int原创 2016-05-10 11:50:14 · 3002 阅读 · 0 评论 -
string.h
#include #include #include void teststr();void testmem();int main(){ testmem(); //teststr(); return 0;}void testmem(){ char str[12] = "hello world"; ch原创 2016-05-10 13:26:03 · 2440 阅读 · 0 评论 -
locale.h和stddef.h
1、locale.h1-1、函数简介char *setlocale(int category, const char *locale)//设置地域化信息category是一个常量,指定了受区域设置影响的函数类别。LC_ALL 包括下面的所有选项。LC_COLLATE 字符串比较。影响strcoll()。LC_CTYPE 字符分类和转换。LC_MONETARY 货币格原创 2016-05-10 18:46:31 · 2977 阅读 · 0 评论 -
float.h浮点型范围和精度
摘自:http://www.runoob.com/cprogramming/c-standard-library-float-h.htmlC 标准库 - 简介C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的:组件组转载 2016-05-08 21:42:48 · 3260 阅读 · 0 评论 -
stdio.h
#include #include //fseek rewind fgetpos fsetposvoid movep();/*读文件*/void readfile();/*从控制台读取*/void readconsole();/*从字符串读取、写入字符串将|符号换成&*/void readstring();in原创 2016-05-09 16:21:20 · 2549 阅读 · 0 评论