使用 DLL 的优点
摘要:动态链接具有下列优点:节省内存和减少交换操作。很多进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。节省磁盘空间。许多应用程序可在磁盘上共享 DLL 的一个副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。升级到 DLL 更为容易。当 DLL 中的函数发生更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。提供售后支持。例如,可修改显示器驱动程序 DLL 以
阅读全文
posted @
2013-06-27 10:44
Tony.Works
阅读(835)
推荐(0)
读《C程序设计语言》笔记11
摘要:发现字符串处理真是太多了,之前写了字符串转整型,整型转字符串,今天要字符串转浮点数; 题目要求: 写一个字符串转浮点数的函数,使它可以处理形如:123.45e-6的科学表示法,其中,浮点数后面可能会紧跟一个e或E以及一个指数(可能有正负号)。#include <stdio.h>#include <ctype.h>double strtofloat(char s[]){ double val, power; int exp, i, sign; for(i=0; isspace(s[i]); i++) //skip white space ; sign=(s[i]==
阅读全文
posted @
2011-07-16 23:36
Tony.Works
阅读(553)
推荐(1)
读《C程序设计语言》笔记10
摘要:编写按照ASCII字符表进行扩展的函数: 函数基本要求:编写函数expand(s1, s2),将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc...xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与a-z等类似的情况。作为前导和尾随的字符原样复制。这是课本练习3-3的题目要求: 按照要求编写如下代码:#include<stdio.h>//expand:expand shorthand notation in s1 into string s2void expand(char s1[], char s2[]){ char c;
阅读全文
posted @
2011-07-15 16:28
Tony.Works
阅读(519)
推荐(0)
读《C程序设计语言》笔记9
摘要:求二进制数中1的个数: 上一篇随笔最后写到了统计x二进制表示中1的个数,这里继续记录下其他的方法: 1.采用的还是位运算,右移位,每次向右移动移位,判断最低位是否为1,程序如下:/************************************* Description; 统计x中值为1的二进制位数*************************************/#include <stdio.h>int bitcount(unsigned int x){ int b; for(b=0; x!=0; x>>=1) if(x & 01) b++;
阅读全文
posted @
2011-07-15 12:53
Tony.Works
阅读(421)
推荐(2)
读《C程序设计语言》笔记8
摘要:按位运算符的运用:C语言中提供了6个位操作符。这些运算符只能作用于整型操作数,即只能作用于带符号或无符号的char、short、int与long类型:&| ^ >> << ~1.按位与的运用:& 提取特定位、清零其余位: 例如:mask中要保留的位上为1,其他位为0,a=a0&mask 判断int的奇偶(效率比%2高得多): 例如:(a&1)==0则为偶数,反之为奇数。(原理:因为奇数二进制末位总为1,偶数总为0。原数与00…001进行按位与运算,就得到了a二进制末位的值。)2.按位异或运用:^ 特定位取反 例如:mask中要取反的位为1
阅读全文
posted @
2011-07-13 11:58
Tony.Works
阅读(706)
推荐(0)
读《C程序设计语言》笔记7
摘要:习题2-4: 编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除 在写次函数之前,先看下一个更简单的函数squeeze(char s[], int c),从字符串s中删除字符c#include<stdio.h>void squeeze(char s[], int c){ int i,j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!=c) s[j++]=s[i]; s[j]='\0';}int main(){ char s[]={}; int i=0; while((s[i++]=g
阅读全文
posted @
2011-07-13 00:04
Tony.Works
阅读(481)
推荐(2)
读《C程序设计语言》笔记6
摘要:《C程序设计语言》习题2-3编写函数str_hextoint(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9,a~f以及A~F。#include<stdio.h>#define YES 1#define NO 0int str_hextoint(char s[]){ int hexdigit, i, inhex, n; i=0; if(s[i]=='0') { ++i; if(s[i]=='x' || s[i]=='X') ++i; } n=0; inhex=Y
阅读全文
posted @
2011-07-12 21:14
Tony.Works
阅读(390)
推荐(1)
两则简单面试题
摘要:之前看到一个面试题目: 将字符串转换成整型数字,当时一想有点没头绪,没办法自己学的太烂了,还不具备编程思想,算法也是一塌糊涂。今天写了下程序,特在这里记录下:/**********************Description: 将字符串转换成相应的整型数 例如:“653”-> 653********************/#include <stdio.h>int strtoint(char s[]){ int i,n; n=0; for(i=0; s[i]>='0' && s[i]<='9'; ++i) { n
阅读全文
posted @
2011-07-12 19:43
Tony.Works
阅读(459)
推荐(0)
读《C程序设计语言》笔记5
摘要:字符串常量: 字符串常量也叫字符串字面值,是用双引号括起来的0个或多个字符组成的字符序列。双引号不是字符串的一部分,它只用于限定字符串。 从技术角度看,字符串常量就是字符数组。字符串的内部表示使用一个空字符'\0'作为串的结尾,因此,存储字符串的物理存储单元比括在双引号中的字符数多一个。这种表示方法也说明,C语言对字符串的长度没有限制,但程序必须扫描完整个字符串后才能确定字符串的长度。 标准库函数strlen(s)可以返回字符串参数s的长度,但长度不包括末尾的'\0'。 下面给出strlen()的两个版本:1 int strlen(char s[])2 {3 i
阅读全文
posted @
2011-07-12 17:06
Tony.Works
阅读(523)
推荐(2)
读《C程序设计语言》笔记4
摘要:练习2-1: 编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现: 采用打印标准头文件中的相应值: 1 #include <stdio.h>2 #include <limits.h>3 //determine ranges of types4 int main()5 {6 printf("采用打印标准头文件limits.h中的相应值:\n");7 //signed types8 printf("signed char mi
阅读全文
posted @
2011-07-12 16:15
Tony.Works
阅读(1251)
推荐(2)
读《C程序设计语言》笔记3
摘要:课后习题1-23:编写一个删除C语言程序中所有的注释语句的程序,要正确处理带引号的字符串与字符常量。在C语言程序中,注释不允许嵌套。ps:未考虑去除C/C++中的单行注释符'//'后面的注释内容 1 /******** 2 Description: 3 删除C语言中所有的注释语句 4 ******/ 5 #include <stdio.h> 6 void rcomment(int c); 7 void in_comment(void); 8 void echo_quote(int c); 9 10 //remove all comments from a valid
阅读全文
posted @
2011-07-12 12:46
Tony.Works
阅读(404)
推荐(0)
读《C程序设计语言》笔记2
摘要:学习字符数组的笔记:1 /***************2 description:3 读入一组文本行,并把最长的文本行打印出来。 4 ***************/5 #include <stdio.h>6 7 #define MAXLINE 10008 int getline(char line[], int maxline);9 void copy(char to[], char from[]);10 int main()11 {12 int len; //当前行长度13 int max; //目前为止发现的最长行的长度14 char line[MAXLINE]; //当前
阅读全文
posted @
2011-07-10 20:36
Tony.Works
阅读(478)
推荐(0)
读《C程序设计语言》笔记1
摘要:字符输入/输出(文件复制): 标准库提供的输入/输出模型非常简单。无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理。 标准库提供了一次读/写一个字符的函数,其中最简单的是getchar和putchar两个。每次调用是,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回。这种字符通常是通过键盘输入的。 一个例子:/***************description: 字符输入/输出:文件复制***************/#include <stdio.h>void main(){ int c; while((c=getchar())!=EOF
阅读全文
posted @
2011-07-10 17:59
Tony.Works
阅读(449)
推荐(0)