代码改变世界

随笔分类 -  C++

12个有趣的C语言问答

2012-09-09 23:30 by Rollen Holt, 1407 阅读, 收藏, 编辑
摘要: 0,gets() 方法Q:以下代码有个被隐藏住的问题,你能找到它吗?A:这个不显眼的问题就是使用了 gets() 方法。此方法接受一个string类型参数,但是却没有检测此数值是否有足够的空间来拷贝数据。所以这里我们一般用 fgets() 方法将来的更好。12345678910111213#include<stdio.h>int main(void){char buff[10];memset(buff,0,sizeof(buff));gets(buff);printf("\n The buffer entered is [%s]\n",buff);return 阅读全文

Linux Socket学习--面向非连接的协议

2012-08-20 21:50 by Rollen Holt, 1293 阅读, 收藏, 编辑
摘要: 套接口的通信有2中基本方式:面向连接和面向非连接的通信。 面向非连接指的是通信之前不需要建立连接,我们生成了一个非连接的套接口,就可以向任何愿意接受我们消息的套接口发送消息,而且每一个消息都可以被重定向到不同的套接口。 我们之前的文章中提供socketpair函数,但是我们当时没有说这个函数是使用面向连接协议来生成套接口对的。 sendto()函数介绍 sendto函数容许我... 阅读全文

Linux Socket学习--为套接口绑定地址

2012-08-20 15:39 by Rollen Holt, 4066 阅读, 收藏, 编辑
摘要: 当我们使用socket函数创建一个套接口之后,这个套接口就处于无名状态,虽然之前我们提到即使没有地址,套接口也能使用,但是这个只限于套接口对在同一个Linux内核中,如果位于两台不同的主机的套接口需要连接,而又没有地址,那么就无法工作。 函数bind的作用就是为无名套接口分配地址,语法如下: #include <sys/types.h>#include <sys/socket... 阅读全文

Linux Socket学习--套接口的类型和协议

2012-08-16 16:04 by Rollen Holt, 6848 阅读, 收藏, 编辑
摘要: 我们首先来说一下PF_INET和AF_INET,虽然标准提倡在指定demain参数的时候,优先使用PF_INET,但是大量已经编写的c代码遵循旧的协议。目前情况是AF_UNIX=PF_UNIX,AF_INET=PF_INET。但是将来是不是这样不好说啊。 不同于socketpari函数的demain参数只能指定为PF_LOCAL,socket函数可以用于生... 阅读全文

Linux Socket学习--地址转换函数

2012-08-16 15:06 by Rollen Holt, 8876 阅读, 收藏, 编辑
摘要: 一个IP地址是由小数点分开的十进制数表示的,我们称之为点分十进制表示法。其中每一个十进制数代表一个字节的无符号数值(按照网络字节序)因为每个字节都是无符号的8位数值,这就限制了每一个字节所能表示的范围是0~255. Internet地址分类 一个Internet地址是由网络地址和主机地址构成的。 我们知道IP地址由32位二进制构成,但是网络地址和主机地址之间的... 阅读全文

Linux Socket学习--域和地址族

2012-08-16 11:53 by Rollen Holt, 4408 阅读, 收藏, 编辑
摘要: 先来说说无名套接口吧: 套接口不一定需要地址,比如函数socketpair就生成了一对相互连接但是没有地址的套接口,这就是所谓的无名套接口。 有时候也会有这样的情况,在相互连接的两个太接口中有一个套接口不需要地址,例如当连接到一个远程的套接口的时候,虽然必须确定远程套接口的地址,但是发出调用的本地套接口却可以是匿名的。 有时候虽然需要一个地址进行通... 阅读全文

Linux Socket学习--域和套接口简介

2012-08-16 10:21 by Rollen Holt, 2419 阅读, 收藏, 编辑
摘要: 套接口创建后,就如同一个文件描述符,我们可以使用同样的IO函数进行读写,关闭操作。其实,和引用一个已经打开的文件一样,套接口也是通过文件描述符来引用的,而且两者的文件描述符共享一个“数字空间”,比如说不能既打开一个文件描述符为4的套接口,又打开一个文件描述符为4的文件。 套接口和已经打开的文件的区别: 1.不能在套接口上调用函数lseek()当然对于管道也不能调用这个函数。 2.套接口可以和网络地址关联,但是文件和管道却不可以。 3.套接口有很多可以通过ioctl()进行查询和设置的选项。 4.套接口必须在正确的状态写才能进行输入输出,但是已经打开的文件可以在任何的时候进行读写操作。 调用o. 阅读全文

分享一个有趣的打印菱形的程序

2012-07-20 21:27 by Rollen Holt, 1257 阅读, 收藏, 编辑
摘要: 想必如果让大家写一个c语言版本的打印菱形的程序,估计都是手到擒来的吧。但是大家请看看下面的这段代码,你是否可以想到呢?#include <stdio.h>int line = 1;int main(){ printf("%*s\n", 7-(line>4? line-4: 4-line), "*******"+2*(line>4? line-4:4-line) ); if(++line != 8) main(); return 0;} 首先说一下”... 阅读全文

Qt: SQL Programming

2012-06-08 23:16 by Rollen Holt, 1338 阅读, 收藏, 编辑
摘要: SQL ProgrammingThis overview assumes that you have at least a basic knowledge of SQL. You should be able to understand simpleSELECT,INSERT,UPDATE, andDELETEstatements. Although theQSqlTableModelclass provides an interface to database browsing and editing that does not require a knowledge of SQL, a b 阅读全文

Linux c学习--进程基础学习

2012-06-02 16:04 by Rollen Holt, 945 阅读, 收藏, 编辑
摘要: #include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char const *argv[]){ printf("I am process %ld\n", (long)getpid() ); printf("My parent is %ld\n", (long)getppid()); return 0;}上面的例子输出了进程的ID和他的父进程的ID#include <unistd.h>#include <st 阅读全文

Linux c基础学习

2012-06-02 15:58 by Rollen Holt, 691 阅读, 收藏, 编辑
摘要: #include <stdio.h>#include <stdlib.h>int myarray[50000]={1,2,3,4,5};int main(int argc, char const *argv[]){ return 0;}#include <stdio.h>#include <stdlib.h>int myarray[50000];int main(int argc, char const *argv[]){ myarray[0]=3; return 0;}如果你用ls -l命令查看上面的2个程序文件的话,你就会发现两个文件的大小差 阅读全文

一些服务器客户端的c例子

2012-05-31 09:41 by Rollen Holt, 1658 阅读, 收藏, 编辑
摘要: 今天早上6点起床之后练习的一些c的网络编程的基础例子client1/* Make the necessary includes and set up the variables. */#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <sys/un.h>#include <unistd.h>#include <stdlib.h>int main(){ int sockfd; int len; struct sockaddr_un 阅读全文

关于编译Qt以及驱动的一点总结吧

2012-05-28 09:56 by Rollen Holt, 8321 阅读, 收藏, 编辑
摘要: 本文详细解读了编译qt的时候,要注意的一些问题。 阅读全文

QTableWidget的水平表头和垂直表头的设定

2012-05-22 19:38 by Rollen Holt, 14268 阅读, 收藏, 编辑
摘要: QTableWidget默认提供了水平表头和垂直表头,表头的索引从1开始。#include <QApplication>#include <QTableWidget>#include <QHBoxLayout>int main(int argc, char** argv){ QApplication app(argc, argv); QTableWidget* tableWidget = new QTableWidget; tableWidget->setWindowTitle("QTableWidget"); tableWidge 阅读全文

Qt窗口屏幕居中显示以及设置大小

2012-05-22 19:36 by Rollen Holt, 12739 阅读, 收藏, 编辑
摘要: 设置窗口居中显示方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码:#include <QDesktopWidget>//.......QDesktopWidget* desktop = QApplication::desktop(); // =qApp->desktop();也可以move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);//.......方法2:在调用show()函数后调用move()函数,j将窗口移动到屏幕中 阅读全文

Qt中的QTableWidget

2012-05-21 20:32 by Rollen Holt, 10714 阅读, 收藏, 编辑
摘要: 最近天气真热啊,下午的话,基本没什么效率,热死人了。今天吃饭的时候看了一下Qt中的QTableWidget的API。官方文档是:http://qt-project.org/doc/qt-4.8/QTableWidget.htmlQTableWidget( QWidget *parent= 0 )QTableWidget( introws, intcolumns, QWidget *parent= 0 )~QTableWidget()QWidget *cellWidget( introw, intcolumn) constvoidclosePersistentEditor( QTableWidg 阅读全文

贴一段微博上的小知识

2012-05-20 22:29 by Rollen Holt, 507 阅读, 收藏, 编辑
摘要: 大家之间看图片把: 阅读全文

QT的密码输入框以及国际化的一些问题

2012-05-14 17:00 by Rollen Holt, 5447 阅读, 收藏, 编辑
摘要: 在QT中想实现密码输入框的时候,我们先创建一个QLineEdit对象,然后调用下面这条语句就行:lineEdit->setEchoMode(QLineEdit::Password);另外在QT国际化的时候,我遇到了在VS中运行程序的时候界面是自己翻译过的,但是直接在项目文件夹双击exe文件的时候是没有翻译的结果最后发现其实我们需要将exe文件和翻译文件(以.qm结尾)放在同一个目录下,这样我们双击exe文件的时候就是我们翻译过的结果比如:MainWindow.exe和mainwindow_zh.qm放在同一个目录下。 阅读全文

C++标准pdf 分享

2012-05-12 20:47 by Rollen Holt, 1017 阅读, 收藏, 编辑
摘要: 分享一个C++标准pdf《英文版》的,很清晰,带目录的。下载地址http://vdisk.weibo.com/s/5j5Pa(10M左右大小)另外分享一些其他的标准:Open StandardsThe site www.open-std.org is holding a number of web pages for groups producing open standards:ISO/IEC JTC1/SC2 - character setsWG3 - 7- and 8-bits character setsISO/IEC JTC1/SC22 - Programming languages 阅读全文

二叉树的一些算法<未完>

2012-05-12 16:09 by Rollen Holt, 702 阅读, 收藏, 编辑
摘要: 求二叉树中距离最远的2个节点的距离本文中二叉树结构定义为:本文中二叉树结构定义为:struct Node { Node* left; Node* right; int data;};定义:空二叉树的高度为-1,只有根节点的二叉树高度为0,根节点在0层,深度为0。两个节点的距离为两个节点间最短路径的长度。求两节点的最远距离,实际就是求二叉树的直径。假设相距最远的两个节点分别为A、B,它们的最近共同父节点(允许一个节点是其自身的父节点)为C,则A到B的距离 =A到C的距离 + B到C的距离。节点A、B分别在C的左右子树下(假设节点C的左右两子树均包括节点C),不妨假设A在C的左子树上,由假设“A到 阅读全文