C
banjitino
爱技术,爱生活。
展开
-
C语言二级指针做函数输入的三种内存模型总结
C语言的三种内存模型总结1. 第一种内存模型#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//void printArray(char* p[], int len) ==void printArray(char** p,...原创 2020-04-07 18:51:47 · 271 阅读 · 0 评论 -
网络编程-多路IO转接模型1-select模型
多路IO转接模型1-select模型在讲select模型之前,要先讲一讲端口复用。在server的TCP连接没完全断开(即connfd: 127.0.0.1:8000没完全断开)不允许重新监听(指的是监听listenfd: 0.0.0.0:8000)是不合理的。它们虽然端口相同,但是IP地址不同,listenfd对应的是wildcard address。解决这个问题的办法是调用setsocko...原创 2020-03-03 02:36:53 · 241 阅读 · 0 评论 -
网络编程-C实现多线程并发服务器server.c
本文仅将上文中server.c的多进程解决并发问题改为多线程解决并发,其余与上文相同serverc.c#include <stdio.h>#include <string.h>#include <arpa/inet.h>#include <pthread.h>#include <ctype.h>#include <un...原创 2020-03-03 01:27:09 · 602 阅读 · 0 评论 -
网络编程-C语言实现多进程并发服务器
在Linux操作系统下,服务器通过fork()复制已调用的进程来创建子进程,以此来实现多进程并发服务器C/S模型:server.c 7 步:socket();bind();listen();accept();read();write();close();client.c 7 步:socket();connect()fgets();write();写给服务器read()...原创 2020-03-03 01:07:56 · 2227 阅读 · 0 评论 -
C/C++ 函数指针做函数参数思想剖析
图解:代码实现#include <iostream>using namespace std;int myAdd(int a, int b){ printf("myAdd : %d\n", a + b); return a + b;}int myMulti(int a, int b){ printf("myMulti : %d\n", a * b); ret...原创 2020-01-27 15:46:47 · 154 阅读 · 0 评论 -
C语言 递归实现字符串反转
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int inverse(char* src, char* dst){ if (src == NULL || dst == NULL) { return -1; } ...原创 2020-01-12 13:00:18 · 449 阅读 · 0 评论 -
C语言 实现单向链表的基本操作
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Node{ int id; struct Node* next;}Node;//创建头结点//链表的头结点地址由函数值返回Node* ...原创 2020-01-11 15:19:58 · 253 阅读 · 0 评论 -
C语言 实现配置文件的读写
首先在config.h中作函数声明#pragma once#ifdef _cplusplusextern "C"{ //函数的声明 int ReadCfgFile(char* file, char* key, char* value, int* len); int WriteCfgFile(char* file, char* key, char* value, int len);...原创 2020-01-09 19:22:37 · 848 阅读 · 0 评论 -
C语言 随机位置读文件
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Stu{ char name[50]; int id;}Stu;void my_fwrite(char* path){ FILE* f...原创 2019-11-16 16:22:03 · 187 阅读 · 0 评论 -
C语言 按格式化读写文件fprintf/fscanf
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Stu{ char name[50]; int id;}Stu;void my_fprintf(char* path){ FILE* ...原创 2019-11-16 16:07:54 · 307 阅读 · 0 评论 -
C语言 按块读写文件
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Stu{ char name[50]; int id;}Stu;void my_fwrite(char* path){ FILE* f...原创 2019-11-16 15:49:16 · 760 阅读 · 0 评论 -
C语言 按行读写文件
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void my_fputs(char* path){ FILE* fp = NULL; //"w+",读写方式打开,如果文件不存在,则创建\ 如果文件存在,...原创 2019-11-16 15:40:09 · 2539 阅读 · 0 评论 -
C语言 按照字符读写文件
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main00(){ fputc('a', stdout);//stdout -> 屏幕,打印普通信息 printf("\n"); char ch; ch ...原创 2019-11-16 14:05:43 · 452 阅读 · 0 评论 -
C语言文件写入时缓冲区验证
缓冲区是标准C独有的特性文件在写入时,先保存数据到缓冲区,当使用fflush(fp)刷新缓冲区或使用fclose(fp)关闭文件时,数据才写入文件,或者在缓冲区内存满时将早先的数据写入文件,不同平台缓冲区大小有所区别。验证缓冲区#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>...原创 2019-11-16 11:00:25 · 711 阅读 · 0 评论 -
C语言 结构体与指针的嵌套训练——师生按名字降序排序
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Teacher{ char* tName;//导师 char** stu;//学生 int age;}Teacher;//在create...原创 2019-11-15 15:02:24 · 368 阅读 · 0 评论 -
C语言将字符串数组进行排序
/*功能:1.把指针数组p1的字符串取出来,2.把二维数组buf2的字符取出来,3.上面的字符串放到p3,p3是在堆区分配的二维内存4.对p3种字符串进行排序参数:p1:len1:p1元素个数buf2:len2:buf2字符串行数p3:二级指针的地址,需要在函数内分配内存,保存p1和buf2的字符串,还需要排序len3:保存p3中的字符串个数*/#define _CRT...原创 2019-11-09 22:31:54 · 2573 阅读 · 0 评论 -
C语言找数组中指定字符串位置
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#define NUM(a) (sizeof(a)/sizeof(*a))int searchKeyTable(const char* table[], const int s...原创 2019-11-09 19:56:58 · 3720 阅读 · 0 评论 -
C语言二维数组的使用
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main01(){ int a1[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int a2[3...原创 2019-11-09 19:20:07 · 885 阅读 · 0 评论 -
C语言数组指针详解
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//argc:传参数的个数(包括可执行程序)//argv:指针数组,指向输入的参数int main01(int argc, char* argv[]){ //数组指针,指针...原创 2019-11-09 17:44:14 · 530 阅读 · 0 评论 -
C语言一维数组分析总结
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int a[] = { 1,2,3,4,5,6,7,8 }; //sizeof()测变量所占的空间(变量所对应类型的空间) //int b[]...原创 2019-11-09 14:55:00 · 824 阅读 · 0 评论 -
C语言用二级指针的两种内存模式分别实现字符串分离
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>/*有一个字符串("abcdef,acccd,ddddd,fffff,sdfsd,llokkl,")写两个函数(API),输出以下结果第一个API(第二种内存模型)1)以逗...原创 2019-11-07 19:55:30 · 265 阅读 · 0 评论 -
C语言字符串替换
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>/*有字符串有以下特征("abcd11111abcd2222abcdqqqqq"),求写一个函数,输出以下结果把字符串替换成("dcba11111dcba2222dcbaqqq...原创 2019-11-07 18:30:39 · 1688 阅读 · 0 评论 -
二级指针做输入:第三种内存模型
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>char** getMem(int n){ char** buf = (char**)malloc(n * sizeof(char*)); if (buf == NULL...原创 2019-11-06 22:14:03 · 112 阅读 · 0 评论 -
C语言二级指针做输入:第二种内存模型
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main01(){ char a0[30] = "22222222"; char a1[30] = "11111111"; char a2[30] = "bbb...原创 2019-11-06 21:20:36 · 192 阅读 · 0 评论 -
C语言二级指针做输入:第一种内存模型
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//void printArray(char* p[], int n)//等价void printArray(char** p, int n){ for (int i = 0...原创 2019-11-06 20:18:05 · 114 阅读 · 0 评论 -
C语言二级指针做参数输出特性
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int getMem(char* p)//错误{ p = (char*)malloc(100 * sizeof(char)); if (p == NULL) { ret...原创 2020-06-02 14:35:15 · 257 阅读 · 0 评论 -
C语言const的使用
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct MyStruct{ int a; int b;}MyStruct;void fun(MyStruct* p){ //指针能变 p=N...原创 2019-11-06 19:17:20 · 127 阅读 · 0 评论 -
C语言键值对查找匹配
问题描述键值对("key = value")字符串,在开发中经常使用要求1:请自定义一个接口,实现根据key获取要求2:编写测试用例要求3:键值对中间可能有n多空格,请去除空格int getKeyByValue(char* keyvaluebuf, char* key, char* value, char* valueBufLen)/*键值对("key = value")字符串,在开...原创 2019-11-06 18:44:28 · 1726 阅读 · 0 评论 -
C语言分离字符串的奇数位和偶数位
问题描述有一个字符串"1a2b3d4z"要求写一个函数实现如下功能:功能1:把偶数位字符挑选出来,组成一个字符串1;功能2:把奇数位字符挑选出来,组成一个字符串2;功能3:把字符串1和字符串2,通过函数参数,传给main,并打印功能4:主函数能测试通过int getStr1Str2(char* source, char* buf1, char* buf2);/*有一个字符串"1a...原创 2019-11-06 16:31:13 · 3393 阅读 · 0 评论 -
两头堵模型
求非空字符串的长度并输出字符串#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>int fun(char* p, int* n){ if (p == NULL || n ==...原创 2019-11-05 21:45:20 · 278 阅读 · 1 评论 -
strstr中的while和do-while模型
求字串'abcd'个数//匹配字串'abcd'#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int my_strstr(char* p, int* n){ if (p == NULL || n == NULL) {...原创 2019-11-05 21:08:26 · 97 阅读 · 0 评论 -
字符串拷贝函数的实现
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void my_strcpy(char* dst, char* src){ int i; for (i = 0; *(src + i) != '\0'; i++) {...原创 2019-11-05 20:39:47 · 756 阅读 · 0 评论 -
字符串的初始化问题
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>/*C语言没有字符串类型,通过字符数据模拟C语言字符串,以字符‘\0’结尾,数字0*/int main01(){ //不指定长度,没有0结束符,有多少个元素就有多长...原创 2019-11-05 19:44:31 · 569 阅读 · 0 评论 -
指针做参数输入输出特性
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void fun(char* p/* in */){ //给p指向的内存空间拷贝 strcpy(p, "abcdef");}void fun2(char* p){ ...原创 2019-11-05 18:58:02 · 312 阅读 · 0 评论 -
C通过指针间接赋值
间接赋值时指针存在的最大意义#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int getA(){ int a = 10; return a;}void getA2(int b){ b = 33;}vo...原创 2019-11-05 18:57:11 · 379 阅读 · 0 评论 -
不断改变指针指向
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char* p = NULL; char* q = NULL; char buf[] = "asdjkhfjk"; p = &bu...原创 2019-11-04 20:18:53 · 161 阅读 · 0 评论 -
指针变量和它指向的内存是两个不同概念
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { char* p = NULL; char buf[] = "abcdef"; printf("p1 = %d\n", p); //改变指针...原创 2019-11-04 20:01:16 · 349 阅读 · 0 评论 -
C指针也是一种数据类型
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int* p = NULL; char********* q = NULL; printf("sizeof(p) = %d, sizeof(q) = %d", sizeof(p), sizeof(q))...原创 2019-11-04 04:14:05 · 265 阅读 · 0 评论 -
C语言内存五区的使用
内存五区堆区(heap)malloc,new,free,delete,需要手动释放内存一般由程序员分配释放,若不手动释放,程序结束时可能由操作系统回收。栈区(stack)程序局部变量由编译器自动分配释放,存放函数的参数值,局部变量的值等。全局区(static)常量和全局变量全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,未初始化的在相...原创 2019-11-04 04:09:00 · 352 阅读 · 0 评论 -
C语言main函数参数、返回值
C语言main函数返回值: main函数的返回值,用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其他数字的含义则由系统决定,通常,返回非零代表程序异常退出,即使程序运行结果正确也仍需修复代码。C语言main函数写法 void main()是错误的,C/C++中从来没有定义过main。C++之父 Bjarne Stroustrup 在他的主页上的 FA...转载 2019-11-04 02:00:47 · 2794 阅读 · 0 评论