linux编程
文章平均质量分 55
晓火
这个作者很懒,什么都没留下…
展开
-
C语言读写二进制文件
一 前言本篇主要讲解如何将结构变量存入文件中,并从文件中读取数据。二 读写文件初始步骤typedef struct { long n1; long n2; }Num;Num number1,number2 ;number1.n1 =10;number1.n2 =20;向文件里面写入数据FILE *file = fopen("number.txt","wb");//如果文件不存在,则创建文件if(file == NULL ) { printf("open error\n"原创 2021-05-30 08:34:07 · 5959 阅读 · 0 评论 -
Linux的TCP接口介绍
1. socket1.1原型#include <sys/socket.h>int socket (int family ,int type ,int protocol)family: AF_INET(ipv4) AF_INET(ipv6) AF_LOCAL (Unix域协议) AF_ROUTE(路由套接字) AF_KEY(秘钥套接字)type: SOCK_STREAM(字节流套接字) SOCK_DGRAM(数据包套接字) SOCK_SEQPACKET(有原创 2021-05-09 09:17:34 · 587 阅读 · 0 评论 -
如何判断stdin的数据类型
一 前言linux环境下,存在文件IO和缓存IO(标准IO)两种。这两种IO都提供stdin、stdout和strerr,即标准输入、标准输出和标准错误。那么问题来了,stdin是什么类型的数据呢?FILE *: int二 测试既然提出了问题,那么就来写代码验证。设计思路是利用C语言的编译规则。FILE *isFILE();int * isINT();FILE *isFILE() { return stdin;}int * isINT(){ return *stdin;}运行两个原创 2021-05-04 08:55:12 · 676 阅读 · 0 评论 -
C语言实现TCP服务端
一 前言上次实现了客户端的TCP通信代码,这次来实现TCP服务端.二 代码实现前期文章C语言TCP客户端获取时间Unix网络编程卷一第三章笔记2.代码#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include原创 2021-05-03 08:27:45 · 1495 阅读 · 0 评论 -
C语言TCP客户端获取时间
一 前言学习Unix网络编程快要20天,由于一直在忙各种事情,再加上网络理论比较多,一直缺乏对代码的实践。二 socket相关的头文件先整理一下代码需要用到的头文件#include <sys/socket.h>#include <netinet/in.h>#include <unistd.h>sys/socket.hnetinet/in.hstruct sockaddrstruct sockaddr_inint socket原创 2021-04-30 20:55:33 · 634 阅读 · 1 评论 -
标准IO库fgets和fputs对一个文本文件的读写操作
一 前言本篇主要讲解如何使用缓冲IO对文件进行读写操作,使用fgets函数和fputs函数。二 fgetsfgets的原型char *fgets (char *bufffer,int buffer_size,FILE *stream);返回值fgets返回它的第一个参数,这个返回值用来记录读取的内容。如果返回值是NULL,则表示当前已经到了文件尾读取规则直到读取一个换行符为止设定一行的最大长度MAX_LINE_LENGTH三 fputsfputs的原型int fputs原创 2021-04-23 16:26:29 · 470 阅读 · 0 评论 -
Unix网络编程卷一第三章笔记
前言这篇文章主要是Unix网络编程卷一第三章的个人笔记1.POSIX 规范的三个字段sin_familysin_addrsin_port五个套接字结构IPV4(sockaddr_in) IPV6(sockaddr_in6) Unix(sockaddr_un)数据链路(sockaddr_dl) 存储(sockaddr_storage)2.IPV4 套接字结构in_addrsockaddr_insockaddrinaddr _t s_ad原创 2021-04-22 17:29:49 · 118 阅读 · 0 评论 -
C语言的argv小案例
一 前言在以往的学习里,每当我创建一个新的文件用来测试功能时,总要按照一定的格式往Makefile文件添加内容,然后一行命令自动运行。久而久之,我就想要设计一段程序来帮我完成这个任务。这篇文章就来记录实现思路。二 设计思路三 代码/******************************************************* AddMakefile.c*******************************************************/#inc原创 2021-03-26 09:25:37 · 204 阅读 · 0 评论 -
用C语言实现回调函数
本文主要介绍如何使用回调函数,一步一步地教会你搭建自己的回调函数,并且在本篇文章会加入一些我对回调函数的一些思考。先来看看一个函数的声明、定义和调用//函数原型的声明void print(char *p);//函数定义void print (char *p) { printf("%s",p);}//函数调用print("this is pointer to function\n");看起来很容易理解,函数的使用已经成为日常,继续下一个话题,声明并定义函数指针//声明一个函原创 2021-02-24 14:07:55 · 657 阅读 · 0 评论 -
C模块化开发
本篇文章主要讨论如何实现C的模块化编程这里所指的模块化编程是利用头文件的形式,将一个项目代码划分到多个文件里面,并使用make进行编译处理。我们先来从主文件中分离函数,为此我们需要两个文件,Main.c和CMath.c/*------------------------------------------ Main.c------------------------------------------*/#include <stdio.h>double Abs(doubl原创 2021-02-20 11:17:22 · 261 阅读 · 0 评论 -
由char* 引发的Segmentation fault错误
在学习形参带const限定符时,意外遇到Segmentation fault的bug问题。C程序是在linux环境下运行。在维基百科上是这样解释Segmentation fault,存储器区段错误(Segmentation fault),又译为存储器段错误,也称访问权限冲是一种程序错误。它会出现在当程序企图访问CPU无法寻址的存储器区段时。当错误发生时,硬件会通知操作系统产生了存储器访问权限冲突的状况。操作系统通常会产生核心转储(core dump)以方便程序员进行调试。通常该错误是由于调用一个地址,而该原创 2021-02-16 14:50:42 · 1460 阅读 · 5 评论