- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 将字符串s1中任何与字符串s2匹配的字符都删掉
<br /> 源自《The C Programming Language》P38 pr2-4:<br /> <br /> 编写函数squeeze(s1, s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除。<br /> <br /> 代码:<br /> #include <stdio.h>#define MAXLINE 100char s[MAXLINE] = {'/0'}; //用于存储经过squeeze处理后的字符串char* sque
2011-04-29 15:47:00 3901
原创 将由16进制数字组成的字符串转换成与之等价的整形值
<br /> 源自《The C Programming Language》P37 pr2-3:<br /> <br /> 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的整形值,<br /> 字符串中允许包含的数字包括:0 ~ 9, a ~ f,A ~ F。<br /> <br /> 参考代码:<br /> #include <stdio.h>#define YES 1#define NO 0
2011-04-28 20:24:00 7018 1
原创 任务0的内核堆栈,用户堆栈
描述任务0的内核堆栈和用户堆栈是如何产生的: linux0.11系统共使用了4种堆栈:系统初始化时临时使用的堆栈;供内核程序自己使用的堆栈(内核堆栈),只有一个,位于系统 地址空间固定的位置,也就是后来任务0的用户态堆栈;每个任务通过系统调用,执行内核程序时使用的堆栈,也即任务的内核态 堆栈,每个任务都有自己独立的内核态堆栈;任务在用户态执行的堆栈,位于任务(进程)地址空间的末端,即任务的用户态堆栈。 从head.s程序起,系统正式在保护模式下运行,此时堆栈段被设置
2011-04-28 11:40:00 2008
原创 计算char,short,int,long类型变量的取值范围
<br /> 源自《The C Programming Language》P28 pr2-1:<br /> <br /> 编写一个程序以确定分别由signed及unsigned限定的char,short,int,long类型变量的取值范围。<br /> <br /> 参考代码:<br /> #include <stdio.h>#include <limits.h>#include <float.h>int main(){ printf("the r
2011-04-27 15:59:00 10564
原创 删除C语言程序中所以的注释语句(有疑问)
源自《The C Programming Language》P25 p1-23: 编写一个删除C语言程序中所以的注释语句。要正确处理带引号的字符串和字符常量。在C语言中,注释不允许嵌套。 参考代码: #include void rcomment(int c);void in_comment();void echo_quote(int c);int main(){ int c, d; while((c = getchar()) !=
2011-04-26 17:21:00 5446 2
原创 把较长的输入行“折”成短一些的两行或多行
源自《The C Programming Language》P25 pr1-22: 编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格符之后。 要保证程序能够智能地处理输入行很长以及在指定的列前没有空格或是制表符的情况。 参考代码: #include #define MAXCOL 10 //输入行的折行位置,即输入行的第n列 //程序将在输入行的每一处第n列之前对该输入
2011-04-25 21:04:00 2914 3
原创 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方
源自《The C Programming Language》P25 pr1-20: 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设 制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该是变量还是常量呢? 参考代码: #include #define TABINC 8 //定义每个TABINC(8)个位置会出现一个制表位int main(){ int c, nb, p
2011-04-22 10:19:00 5019 9
原创 删除每个输入行末尾的空格,制表符,并删除全空格行
源自《The C Programming Language》P22 pr1-18: 编写一个程序,删除每个输入行末尾的空格,制表符,并删除完全是空格的行 代码: #include #define MAXLINE 10int getLine(char s[], int lim);void copy(char to[], char from[]);int calcLen(char s[]);int main(){ int len
2011-04-20 20:35:00 4928 1
原创 读入一组文本行,打印最长的文本行
源自《The C Programming Language》P29 从终端读入一组文本行,并将最长的文本行打印出来 代码: #include #define MAXLINE 1000 //允许输入行的最大长度#define LIM 8int getline(char line[], int maxline);void copy(char to[], char from[]);int main(){ int i, j;
2011-04-19 21:17:00 2866 1
原创 linux0.11 引导启动程序目录boot/分析
boot/包含三个汇编文件:bootsect.s,setup.s,head.s。bootsect.s程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中(引导扇区,0磁道,0磁头,第一个扇区),在PC加电ROM-BIOS自检后,将被BIOS加载到内存0X7C00处执行。setup.s程序主要用于读取机器的硬件配置参数,把内核模块system移动到适当的内存位置处。head.s程序会被编译连接在system模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始化设置。 BIOS:P
2011-04-18 11:44:00 855
原创 在输出终端中消除多余空格
<br /> 来源于《The C Programming Language》的一道习题(P13,PR1-9):<br /> 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替<br /> 自己实现:<br /> <br /> #include <stdio.h><br /> int main()<br /> {<br /><br /> int c, flag;<br /> flag = 0;<br />
2011-04-14 15:53:00 908
原创 打印输入中单词长度的直方图
源于《The C Programming Language》P17 pr1-13: 编写一个程序,打印输入中单词长度的直方图。 /**************************************************************直方图定义:n:某个长度单词出现的次数(长度为4的单词出现了9次,则n = 9)M:出现最频繁的长度的次数H:定义的直方图的最大长度(本例中为MAXHIST)*********************************
2011-04-14 15:28:00 6012 5
原创 统计输入中的行数,单词数,字符数
<br /> 源于《The C Programming Language》P14的一道例题:<br /> <br /> 统计输入中的行数,单词数,字符数(单词的定义:其中不包括空格,制表符,换行符的字符序列) <br /> <br /> #include <stdio.h><br /> <br /> #define IN 1<br /> #define OUT 0<br /> <br /> int main()<br /> {<b
2011-04-14 10:30:00 1932
原创 受启迪了
<br /> 最近看了写技术BLOG,受了点启发,认识到了写技术BLOG是一种很好的思考总结的方式。对于我这个原生性的挫折感较强的人来说,希望BLOG能给我带来快乐和自信。<br /> 近期的BLOG基本上专注于LINUX内核和C语言的锤炼,这是我目前的感兴趣点和特别渴望提升的地方,我希望半年,一年,若干年后回头看博客,让我觉得积累了很多知识,既然选择了这条路,就要勇于攀登,敢为人先。<br /> 这基本上可以看着我的在线读书笔记了(^_^),拼搏啊,时间不多了...
2011-04-13 15:38:00 780
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人