How to start a Project using C
发表于|更新于|CS Project
|总字数:237|阅读时长:1分钟|浏览量:
介绍
- 将会介绍如何使用C开发在Linux平台上运行的控制台应用程序
 - 和HelloWorld一样😄
 - 选用的项目是自己写一个文本编辑器!(Build Your Own Text Editor)
 - 初步开发这个项目,我觉得从中学到最重要的东西就是,开发不是一蹴而就的,为了更新功能,删改重构是常有的事情,现在这个阶段,很难有一次性铺平,统筹规划好所有东西的能力,所以不能用十分平面的想法去开发。当然这一切要尽可能与其他模块解耦,不能因为这里的重构,影响到其他大的模块。
 
准备工作
- 
了解所要开发项目的背景知识
 
环境搭建
- 
gcc作为编译器工具链
 - 
Make作为构建工具
 
项目框架
- 
一个kilo.c文件,但划分模块
 
开发与测试
运行维护
updating…
相关推荐
 2023-04-24
How to start a Project from Zero
介绍  如何从0开始完成一个项目?这是我在学习过程中遇到的一个难以忽视的问题。这篇文章将会包含如何去开始一个项目,如何去维护一个项目的记录。不过这些想法没有经过认证,仅仅是对于开发过程中的思考方式的归纳和总结。 开发的范式很难总结出来,因此我将尝试分析我在一门程序设计专题课最后的大作业开发流程,通过完善这个远古项目开发的过程,来帮助构建一个开发的范式。 这个项目采用C和visual studio2017开发   项目介绍   项目的名字叫做"排序可视化",要求我们小组实现常见排序的可视化展示。   项目的实现需要借助学校里一个老掉牙的图形库,该图形库为我们封装了某些图形的画法,还有windows窗口的生成等等   这个项目按理来说是简单的,但是还是有一些刚开始难以思考的要素,比如说Windows,比如说图形化,这样就不够把最需要关注的点显露出来,因此我想在另一篇文章中选择一个要素最为稀少的项目,也就是使用C/C++和文本编辑器开发的在Linux平台上运行的控制台应用程序,来阐述我认为的项目开发思路。   准备工作   单拎出来一个排序可视化,我们如何使用我们手...
 2023-11-13
CSAPP bomblab
Intro  CSAPP里传奇的实验 通过汇编能力拆除二进制炸弹,拯救世界!   phase_1   通过strings_not_equal想到这里有个字符串判断   x/s 402400得到字符串为Border relations with Canada have never been better.   phase_1就是上述字符串   phase_2   通过read_six_numbers得到phase_2是六个数字   add    eax, eax可见每次取出的比较数字翻倍,第一个数字为1   phase_2就是1 2 4 8 16 32   phase_3   阅读反汇编,可知读取两个数字   第一个要比7小   第二个根据第一个有不同的分支答案   phase_4   第四题的func4是一个递归函数   phase_5   通过内存查找关键字符串flyers   x/s 0x4024b0查找另一个敏感字符串maduiersnfotvbylSo you think you can stop the bomb with ctrl-c, do you?   输入的六个...
 2023-11-11
CSAPP datalab
突发奇想,重做下CSAPP的lab,顺便把以前没做完的补上,希望能坚持下来 Links  lab download   Intro  datalab主要是使用位运算来实现函数,考验对底层数据类型的掌握 修改bit.c文件以彰显你的位运算技术 32bit  Solution bitXor  用位与和位非实现位异或 德摩根律走起  123int bitXor(int x, int y) {  return ~(~(~x & y) & ~(x & ~ y));} tmin  要求返回最小的补码值0x10000000  123int tmin(void) {  return 1 << 31;} isTmax  判断是否是补码最大值 由tmax的特征可得,特判0xFFFFFFFF  123int isTmax(int x) {  return !(((x + 1) ^ x) ^ ~0x0) & !!(~x);} allOddBits  要求判断所有奇数位是否都为1 先取奇数位 再判断是否...
 2023-09-22
MIT 6.858
Links  课程主页 课程视频   LEC 1: Introduction, threat models 
 2023-08-25
CS161 Project 1
Project1 Q0 Customizer  以customizer - customizer身份获取后续密码 remus - ilearned   Q1 Remus  要求我们使用缓冲区溢出注入代码,由此读取访问受限的文件README  orbit.c12345678910111213#include <stdio.h>void orbit(){  char buf[8];  gets(buf);}int main(){  orbit();  return 0;}  可以发现gets()没有对读取的输入作越界处理,因此含有缓冲区溢出的隐患 ./debug-exploit并在第五行处打断点  gdb12345678910111213141516(gdb) b 5(gdb) r(gdb) x/16x buf0xbffffc68:     0xbffffd1c      0xb7ffc165      0x00000000      0x000000000xbffffc78:     0xbffffc88      0xb7ffc...
 2023-08-20
CS161
 The primary way of securing a system is understanding how it works?  False. Oftentimes the best defense is to remove incentives for attackers   Links   ucb的一门系统安全课程   课程主页su20   课程主页su21用作proj   课程hw(toekn: G2DR3D)    Lecture 1: Introduction   Threat Model: 谁会攻击你、他们有什么样的资源   Lecture 2: Security Principles   Don’t Blame the Users   Security is Economics   Prevention   Detection, Defense in Depth   Password Authentication   Measuring Attacker Capabilities  rubber-hose cryptanalysis     Least P...
