自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zzhangjiej的专栏

一切技术问题都不是问题,一切问题都是时间问题。

  • 博客(53)
  • 收藏
  • 关注

原创 atoi实现

<br />我写的atoi实现小练习,没有考虑数据太长越界的情况。<br />#include <stdio.h>#include <string.h>#include <stdlib.h>int myatoi( char* str){ char *p; int signal = 1; int ret = 0; //要返回的整数值 p = (char *)malloc(1024); strcpy(p, str); if(*p == '-') //是个负值

2010-06-03 16:37:00 718 1

原创 c++调用c时回调函数的处理

      在c++调用c程序时,回调函数是不能直接使用的,以c++调用c的Gtk函数为例, 比如,在g_idle_add (init, NULL); 这句话中,一旦idle就会调用函数init(), 这个init()还会对类的成员变量进行处理。这时,假如把init()简单地定义为类的普通成员函数就会出现类型不匹配的错误,因为g_idle_add()要求它的第一个参数是个普通的函数指针

2009-09-07 14:51:00 1877 1

原创 备忘

因为包依赖没法装gsplashy的解决命令:dpkg --force-overwrite -i /var/cache/apt/archives/splashy_0.3.13-3ubuntu1_i386.deb

2009-08-12 15:20:00 437

原创 重命名一个文件的代码

  //   crt_renamer.c     /*   This   program   attempts   to   rename   a   file   named       *   CRT_RENAMER.OBJ   to   CRT_RENAMER.JBO.   For   this   operation       *   to   succeed,   a   file  

2009-07-22 14:37:00 833

原创 正确和错误只差一个括号的位置

从文件中读数据,在windows下读出来的老是一个个笑脸。我到另一台机子的linux上再敲一遍,结果是对的,我还以为是windows的问题。原来是我写的程序里 while((ch = getc(fp) )!= EOF)的括号位置不对,赋值运算符的优先级低,get(fp)和EOF比较,得到的结果1赋给ch,笑脸就是为1的char值。

2009-07-22 14:12:00 620

原创 c primer plus 13 小知识点

c 程序自动打开3个文件,标准输入stdin,标准输出stdout和标准错误stderr输出。FILE是stdio.h中定义的一种派生类型。指针并不指向实际的文件,而是指向一个关于文件的信息的数据包,其中包括文件I/O使用的缓冲区信息。int fgetc ( FILE * stream ); 返回读取的字符。Returns the character currently pointed

2009-07-21 10:22:00 531

原创 二进制文件和文本文件

不同的文件格式的主要差别之一就是信息的编码不同,而编码总归都是"二进制"的,从这个方面看,所有的都是"二进制文件"。而我们常讲的"二进制文件"并不是这个意思,它是相对于"文本文件"而言的,也就是说,所有非文本文件(即非ASCII编码)都被称为"二进制文件".我说:上面的二进制文件和文本文件的概念是对所有的磁盘上的文件的区分。之前c primer plus里的文本视图和二进制视图似乎只是对文本文

2009-07-21 09:55:00 508

原创 Points on C 第一章总结

1. 程序的数据放在哪里?  就在main()函数中。2. int read_column_numbers(int columns[], int max);    将数组传到函数中时,一般还要再加个参数表示数组的大小。3. 要从逻辑上删除一段c代码,好的方法是使用#if指令:    #if 0                statements    #endif4. st

2009-07-16 10:20:00 610

原创 信号和槽机制

"connect就是把Qt发出的信号(SIGNAL),关联到一个槽(SLOT)上去,槽可以简单理解为一个成员函数。比如一个按钮,你点了它,它会有相应的信号发出来,要处理这个信号,就要把这个信号关联到相应的成员处理函数上去。Qt使用信号和槽的概念,其实就是复杂一点的回调函数的实现, 因为回调函数本身没有类型检测。"connect( &quit, SIGNAL(clicked()), &a

2009-07-13 09:09:00 578

原创 c primer plus 14.13 奇特的声明

规则:1.表示一个数组的[]和表示一个函数的()具有同样的优先级,这个优先级高于间接运算符*的优先级。2.[]和()都是从左到右进行结合的。int board[8][8];    //int数组的数组int ** ptr;            //指向int的指针的指针int *risks[10];      //具有10个元素的数组,每个元素是一个指向int的指针。规则1,ri

2009-06-24 13:40:00 475

原创 c primer plus Chapter 14 p383

第十四章 结构和其他数据形式程序清单14.2 manybook.c程序 /******************************************************** manybook.c--包含多本书的图书目录 *******************************************************/#include #def

2009-06-23 09:37:00 847 1

原创 24hs-2 面向对象程序设计

面向对象程序设计OOP, Object-oriented Programming, 是使程序设计变得更加简单的一种编程方法。2.1 理解类C++使用类描述某种数据类型。类类似于C中的结构,但是不能向结构添加函数。#include using namespace std;class car{public: car(); void p

2009-06-17 15:05:00 579

转载 Qt安装

二.安装qt-x11-free-3.3.2.tar.gz1. 我把qt-x11-free-3.3.2.tar.gz拷贝到/usr/local/qt目录下cd /usr/local/qttar zxvf qt-x11-free-3.3.2.tar.gz mv qt-x11-free-3.3.2 qt2. vi /etc/profile ,添加环境export QTDIR=

2009-06-17 14:10:00 1065

原创 Qt3 ---1 入门

 ubuntu下安装Qt3   在应用程序-添加/删除下,选择Qt3 Linguist、Qt3 助手、Qt设计器,点“应用改变”即可。 #include #include int main(int argc, char*argv[]){ QApplication app(argc, argv); QLabel *label = new QLabe

2009-06-17 09:00:00 1201

原创 24hs-1 Qt简介

Qt是个基于C++编程语言的GUI工具包。GUI工具包(或GUI库)是构造图形用户界面(程序)所使用的一套按钮、滚动条、菜单和其他对象的集合。Linux下安装: 首先下载qt-*.*.*.tar.gz到/usr/local目录中。从/usr/local目录中执行下面命令:tar xvfz qt-*.*.*.tar.gz    //将文件解压到一个子目录中。然后,在local这个路径

2009-06-16 15:21:00 716

原创 第5章 使用make

    make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的。     make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

2009-06-16 10:25:00 488

原创 Qt4白皮书

Qt是什么?    直观上说,Qt就是一些头文件,在文件开头include它们,程序中就可以使用Qt指定的函数,变量等,编译运行出来就能看到界面。2. 窗体     窗体是指组合在一起创建用户界面的可视元素。按钮、菜单、滚动条、消息框以及应用程序窗口都是窗口的例子。Qt的窗体并没有在"控件"或"容器"之间加以截然区分。所有窗体既可以作为控件使用、又可以作为容器使用。    标准窗体

2009-06-15 16:48:00 940

原创 第4章 调试工具gdb

命令:gdb test4_1...(gdb)break main //设置断点(gdb)break 要设置断点的行号(gdb)run(gdb)step(gdb)print 要打印的表达式的值(gdb)display 要打印的表达式的值  //每当程序运行到断点处就会显示该表达式的值(gdb)s  //step命令的快捷键(gdb)next //不进入程序

2009-06-15 14:07:00 639

原创 第三章 gcc编译器

gcc GNU C Compile,是在GNU/Linux系统下的标准C编译器。gcc test3_1.c //生成a.out的文件//运行:./a.outgcc -o test3_1 test3_1.c //生成test3_1//运行:./test3_13.1.6使用高级gcc选项。1.管理大型项目。假定程序有3个模块,分别为test3_1.c tes

2009-06-12 15:37:00 462

原创 第2章 vim编辑器

vim, vi imporve, Linux下功能最为强大的编辑器。 退出Linux: 先按下Esc键回到命令行模式,然后键入":",此时光标会停留在最下面一行,再键入"q",最后按Enter键即可。w 写文件q!命令行模式的操作:1. 移动光标h 向左一格l 向右一格j 向上一格k 向下一格0 该行的最前面$ 该行的最后面{ 光标移到前面的"{"处

2009-06-12 14:00:00 419

原创 14 章 结构和其它数据形式

结构声明:例:struct book{    char title[MAXTITL];    char author[MAXAUTL];    float value;};使用: struct book library;以上等于:struct book{    char title[MAXTITL];    char author[MAXAUTL

2009-06-11 16:24:00 444

原创 13.7 其他标准I/O函数

int ungetc(int c, FILE *fp) 将c指定的字符放回输入流中。int fflush(FILE *fp) 将缓冲区中任何未写的数据发送到一个由fp指定的输出文件中去。这个过程成为刷新缓冲区。如果fp是一个空指针,则刷新掉所有的输出缓冲。fread()和fwrite()函数:二进制。  

2009-06-11 14:39:00 451

原创 指针和数组等价 的意思

    char c[10];     //scanf("%s",&c);     scanf("%s",c);      这两句话的作用一样,哪句都对,且结果一样。     因为数组名做参数时会退化成指针。数组名就是首地址。那么,在C语言中,“指针和数组等价”是什么意思?  说数组和指针 “等价”不表示它们相同, 甚至也不能互换。它的意思是说数组和指针的算法定义可以用指针方便的访问数

2009-06-10 16:11:00 1798

原创 文件输入/输出

13.3 一个简单的文件压缩的程序----就是读取文件内容,每三个提取出一个字符 :-(/********************************************************* c primer plus p360 把您的文件压缩到原来的三分之一 ********************************************************

2009-06-09 16:21:00 397

原创 文件输入/输出

13.1 和文件进行通信文本视图和二进制视图:在文本视图中,程序看到的内容和二进制的内容可能不同,例如MS-DOS文本文件用回车符和换行符的组合/r/n来表示行尾,Macintosh用一个回车符/r来表示行尾。C程序使用一个/n表示行尾。所以,如果C程序以文本视图模式处理一个MS-DOS文本文件,在读取文件时它会将/r/n转换为/n,在写入文件时它会将/n转换成为/r/n.UNIX

2009-06-09 09:47:00 467

原创 ANSI C的类型限定词

一个变量是以它的类型和存储类表征的。C90增加了两个属性:不变性和易变性。这些属性是通过关键字const和volatile声明的。const:不能通过赋值、增量或减量计算来修改该变量的值。然而,可以初始化一个const变量。在函数定义的参数中使用:const int array[]和const int *array相同,表明array指向的数据是不可变的。     在文件之间共享c

2009-06-08 17:06:00 507

原创 内存分配,malloc()和free()

c primer plus P340为了在程序运行时分配内存。 在头文件stdlib.c中有malloc()和free()的原型。malloc()接受一个参数:所需内存字节数,然后malloc()找到可用内存中一个大小适合的块,返回那块内存第一个字节的地址。ANSI C标准使用了一个新类型:指向void的指针,被用作“通用指针”。例:double *ptd;ptd = (d

2009-06-08 14:20:00 540

原创 Dev编译器的编译问题

上周末开始dev-c++开始有个问题,就是写c primer plus的12.11这个例子的时候,点debug或者run,会弹出个提示框 “Project is not compiled”,不会运行,似乎也没有链接,因为把include库文件的那句注释掉也不会报错,但是会快速地弹出那个显示error和warning的框,但是一闪即逝。重建一个工程,再把文件都包含进来也不行。在某个国外论坛上看到

2009-06-08 11:12:00 3259

原创 随机数函数

rand()函数来产生随机数。相关函数:srand()函数说明:rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。返回值:返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,

2009-06-05 13:57:00 774

原创 存储类和函数

函数也具有存储类。函数可以是外部的(默认情况下)、静态的,还有内联函数。函数前面加个static修饰,就是静态的。只可以在定义它的文件中使用。通常使用关键字extern来声明在其他文件中定义的函数。这一习惯用法主要是为了使程序更清晰,因为除非函数声明使用了关键字static,否则认为它是extern的。也就说,在一个文件中正常定义的函数,在其他的文件可以直接使用。(?) 

2009-06-05 11:40:00 1365

原创 存储类说明符 auto register static extern typedef

auto表明一个变量具有自动存储时期。register只能用于具有代码块作用域的变量。static: 当用于具有代码块作用域的变量的声明时,使该变量具有静态存储时期,从而得以在程序运行期间存在并保留其值。 变量仍具有代码块作用域和空链接。      static用于具有文件作用域的变量的声明时,表明该变量具有内部链接。extern表明一个已经在别处定义了的变量。 

2009-06-02 17:19:00 817

原创 存储类 (作用域、链接和存储时期)

作用域:程序中可以访问一个标识符的一个或多个区域。一个C变量的作用域可以是代码块作用域、函数原型作用域或者文件作用域。     一个代码块是包含在开始花括号和相应的结束花括号之内的一段代码。在代码块中定义的变量具有代码块作用域(block scope),从该变量被定义的地方到包含该定义的代码块的末尾该变量均可见。另外,函数的形式参量尽管在函数的开始花括号前进行定义,同样

2009-06-02 10:54:00 1073

原创 strtol()函数

/************************************************************* c primer plus P315 11.29 ---尝试使用strtol()函数 *************************************************************/#include #include int main(voi

2009-06-02 09:49:00 897

原创 MVC模式and so on

key:         os:进程调度,内存管理,驱动,文件系统,网络        IPC        windows中的内容保护,虚存        bootloader,开发板带两个bootloader。uboot        文件系统:crasfs、jffs、vnifs        GUI: X、KDriver        Linux内核支持frame

2009-05-23 16:19:00 421

原创 carpe diem,memento mori!

看到同事的msn签名是这个,不好意思问就在网上查了下,在维基百科上有,原来这个carpe diem是个短语,"seize the day and place no trust in tomorrow"。

2009-05-23 14:05:00 2219

原创 字符串输出

 首先注意,只有后面有空字符才能叫做字符串,否则只能称之为字符数组。 字符串输出的函数有:puts(), fputs(), printf(). puts():       1. 括号中参数是字符串的地址。       2. 和printf()不一样,puts()显示字符串时自动在其后添加一个换行符。       3. puts()输出遇到空字符截止,所以应确保有空字符存在。

2009-05-22 10:35:00 591

原创 what happened?

刚写好的一大篇,点了个发表之后回到了编辑的空白页面,然后写的东西就全没了,55555~~~@#$%$#%#@^#%^!$#@!!

2009-05-22 10:29:00 470

原创 字符串输入总结

gets():遇到换行字符(/n,回车)认为输入结束,换行符之前(不包括换行符)的所有字符读入,在这些字符后添加一个空字符(/0)。它将读取换行符并将其丢弃。这里若定义的数组比输入的数据的长度小,这些输入的数据会覆盖内存的别的地方。为了避免这个问题,引入了fgets()函数,可以指定字符长度。(下篇文章有fgets内容)。scanf()函数:用%s格式读取。scanf()和gets

2009-05-21 18:03:00 543

原创 fgets()函数从文件中读数据

这是c primer plus第11章的内容。第五版中文版p293。fgets需要三个参数,第一个是读取的数据要存放的指针,第二个是允许读取的最大字节数,第三个是从哪里读取。课本上的例子是从终端输入,此时第三个参数写成stdin。但是要从文件中读取没有例子,下面是从网上找来改编的,在dev下运行通过: #include int main(int argc, char *argv[]

2009-05-21 17:45:00 2792 1

原创 memwatch使用笔记

memwatch是一个用于c和c++的内存泄漏检测工具,因为我还不知道的原因,在c++里不是很好用,但是在c是绝对可用的。memwatch从网上下下来的压缩包中,主要就是两个源文件:memwatch.h和memwatch.c,这也是为什么说它的跨平台的原因。首先将它们放在和我们写的源程序相同的路径下,加到我们的工程中。我现在用的是windows下的Dev-C++开发环境,有如下步骤:1.

2009-05-21 15:13:00 1830

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除