C
文章平均质量分 68
xy913741894
这个作者很懒,什么都没留下…
展开
-
利用可变参数模拟实现简易printf
printf一般是这么使用的, printf (“Characters: %c %c \n”, ‘a’, 65); 它是可变参数,遇到%s,%c,%d就格式化输出 因为我们重点是了解学习可变参数,因此,我们简化一下,遇到c,s,d就格式化输出 当然也许你会说那么想输出c字符咋办?其实不难,只要扫描的时候向printf学习用%c输出,c直接输出,只不过我们重点不在这个扫描字符串分析,原创 2017-05-24 21:22:37 · 351 阅读 · 0 评论 -
Unicode和UTF-8关系
1. 基础1.1 ASCII码我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被称为一个字节(byte). 也就是说, 一个字节一共可以用来表示256种不同的状态, 每一个状态对应一个符号, 就是256个符号, 从 0000000到11111111.转载 2017-03-29 19:45:44 · 354 阅读 · 0 评论 -
实现一个C语言版的JSON库(1)
JSON原创 2017-03-23 17:04:41 · 4170 阅读 · 1 评论 -
memcpy,memset,memmove的使用与实现
void *memcpy( void *dest, const void *src, size_t count);返回值:memcpy returns the value ofdest.参数:destNew buffersrcBuffer to copy fromcountNumber of characters to copyRemarks原创 2016-10-07 10:35:25 · 811 阅读 · 0 评论 -
C语言 顺序表的实现 (动态)
上一篇博客写了顺序表的静态实现,即指定大小的顺序表,这篇则给出动态实现的顺序表,即可以改变大小的顺序表。给出顺序表的定义:typedef int DataType;typedef struct SeqListD { DataType *array; int size;// 记录有效元素的个数 int capacity;// 空间总大小}SeqListD, *PSeqListD;原创 2016-09-11 15:19:26 · 1343 阅读 · 0 评论 -
简单通讯录(以数组的方式实现增删改查)
实现一个简单的通讯录增删改查简单一点可以采用数组的方式来存储元素首先给出结构体的定义:typedef struct PeopleInfo { char name[MAX_NAME]; int age; char sex[MAX_SEX]; char phone[MAX_PHONE]; char addr[MAX_ADDR];}PeopleInfo;typ原创 2016-09-26 16:32:07 · 1133 阅读 · 0 评论 -
字符串空格替换或删除
1.将一个字符串里面的空格替换成%20,不考虑字符数组大小溢出,不得使用库函数2.将一个字符串里面的一个或多个空格替换成一个空格这两道题都是关于字符串替换,不同的是第一道题是将一个空格替换为3个字符%20,当然这里任意3个字符都可以,而且只要保证数组大小足够大,一个空格替换成多个也无所谓,本质上是将一个字符替换成多个字符从而增加原字符的长度。而第二个的话则是将多个字符(只不过是原创 2016-08-14 23:01:06 · 683 阅读 · 0 评论 -
用异或实现查找只出现一次的数字
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,请找出这两个数字。原创 2016-08-07 21:28:45 · 5229 阅读 · 8 评论 -
C和指针(Chapter3 &Chapter4)
主要整理一些自己看c和指针(英文版)遇到的我自己认为不熟悉或者是重要的知识点。有一些词会用英文表述。第三章主要讲了Data。The chapter describes data and three properties of variables----scope,linkage,storage class(作用域,链接属性,存储空间) are also described.原创 2016-08-14 18:33:30 · 527 阅读 · 0 评论 -
C语言 单链表的实现
上篇博客给出了顺序表的实现,顺序表的优点就是支持随机访问,但是除了在尾部删除插入,在其他位置进行插入删除都要移动大量元素,导致效率低下,因此为了提高插入删除的效率,有了链表这样结构。链表的定义,不再赘述,下面给出单链表的常规操作(增删改查等)的具体实现。首先定义单链表的结构typedef int DataType;typedef struct Node { DataType data原创 2016-09-16 15:07:36 · 519 阅读 · 0 评论 -
sizeof 和 strlen的一些区别(用C语言代码表示)
声明:本文所有代码均在VS2013下win32平台用C语言测试首先sizeof是运算符,其值在编译的时候就计算好了且sizeof里面的运算结果不生效,即#include int main(){ int a = 0; printf("%d\n", sizeof(a++)); printf("%d\n", a); return 0; }输入结果为 4 0sizeof(原创 2016-08-12 22:18:37 · 474 阅读 · 0 评论 -
C语言 顺序表的实现(静态)
最近复习到C语言的顺序表,把它实现一遍。给出顺序表的定义#define MAX_SIZE 100typedef int DataType;typedef struct SeqList{ DataType array[MAX_SIZE]; int size; // 记录有效元素的个数}SeqList, *PSeqList;void InitSeqList(PSeqLi原创 2016-09-11 15:02:26 · 903 阅读 · 0 评论 -
原码反码补码以及移位按位与或异或等位操作的实例
实例全部来自C和指针课后习题,英文版p123 - 124可见主要是看到bitwise以及shift运算,在做习题的过程中顺便复习了原码反码以及补码的运算,也清除了很多知识的盲点,比如一个二进制负数如何变成十进制等。在32位的机器下,已知int a = 10, b = -25;求下列位运算。a是正数,原码,反码,补码都一样00000000 00000000 00000000 00原创 2016-08-29 17:28:14 · 1271 阅读 · 0 评论 -
递归实现n^k和digitSum(n)
首先题目如下:1.编写一个函数实现n^k,使用递归实现2.写一个递归函数digitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。分析过程由下图可说明:原创 2016-08-07 16:00:43 · 784 阅读 · 0 评论 -
C语言中的extern,static和register的一些用法
在谈extern和static用法之前,我们首先要清楚了解一些基础概念。linkage链接属性有三种:external, internal, none。C和指针给出的介绍如下:Identifiers that have no linkage are always individuals, that is, multiple declarations of the identifier原创 2016-08-15 17:49:02 · 2696 阅读 · 0 评论 -
C和指针(Chapter 1 & Chapter 2)
主要整理自己看c和指针(英文版)遇到的一些知识点。部分可能用英文表述。1.What is the advantage of putting declarations, such as function prototypes, in the header files and then using #include to bring the declarations to the source原创 2016-07-07 19:21:30 · 585 阅读 · 0 评论 -
一些好玩的题目
1.5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。题目要求是用编程实现,一开始拿到这个题目,真是两眼一抹黑无从下手的感觉,由实际问题抽象到具体问题对于我这种编程新手原创 2016-07-06 18:11:22 · 1080 阅读 · 0 评论 -
反转字符串
反转字符串s = "123456"打印出654321这里面有2种想法:改变字符串s = “654321”,直接打印逆序打印字符串,不改变字符串这里我都简单实现了一下:void reverse_c(char* str) //c语言实现{ if (*str == '\0') return; reverse_c(str+1); putchar(*str);原创 2017-06-10 17:19:20 · 356 阅读 · 0 评论