(2010-04-12 12:13)

标签:

杂谈

C语言可变参数及stdarg.h中的三个宏定义

我们知道va_start,va_arg,va_end是在stdarg.h中被定义成宏的,由于1)硬件平台的不同

2)编译器的不同,所以定义的宏也有所不同,下面以VC++中stdarg.h里x86平台的宏定义

typedef char * va_list;

#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) -

1) & ~(sizeof(int) - 1) )

#define va_start(ap,v) ( ap = (va_list)&v +

_INTSIZEOF(v) )

#define va_arg(ap,t) ( *(t *)((ap +=

_INTSIZEOF(t)) - _INTSIZEOF(t)) )

#define va_end(ap) ( ap = (va_list)0

)

定义_INTSIZEOF(n)主要是为了某些需要内存的对齐的系统.

C语言的函数是从右向左压入堆栈的,下图是函数的参数在堆栈中的分布位置.

高地址 |-----------------------------| |函数返回地址 | |-----------------------------| |....... | |------

(2010-04-12 10:56)

标签:

杂谈

putchar getchar

fputchar fgetchar

putc getc

fputc fgetc

puts gets

printf scanf

fprintf fscanf

printf scanf

函数名: getc

功 能: 从流中取字符

用 法: int getc(FILE *stream);

函数名: getch

功 能: 从控制台无回显地取一个字符

用 法: int getch(void);

函数名: getchar

功 能: 从stdin流中读字符

用 法: int getchar(void);

函数名: getche

功 能: 从控制台取字符(带回显)

用 法: int getche(void);

函数名: fgetc

功 能: 从流中读取字符

用 法: int fgetc(FILE *stream);

函数名: fgetchar

功 能: 从流中读取字符

用 法: int fgetchar(void

(2010-03-24 20:16)

标签:

杂谈

gets函数可以从标准输入获得字符串,并在字符串的最后加‘\0’.但是他不会检查缓冲区是否溢出。

(2010-03-23 21:42)

标签:

杂谈

printf函数(格式输出函数)

1.一般格式

printf(格式控制,输出表列)

例如:printf('i=%d,ch=%c\n',i,ch);

说明:

(1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:

①格式说明:由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输出。

②普通字符,即需要原样输出的字符。

(2)“输出表列”是需要输出的一些数据,可以是表达式

(3)printf函数的一般形式可以表示为

printf(参数1,参数2,……,参数n)

功能是将参数2~参数n按参数1给定的格式输出

2.格式字符(9种)

(1)d(或i)格式符。用来输出十进制整数,有以下几种用法:

①%d,按整型数据的实际长度输出。

②%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

③%ld(%mld 也可),输出长整型数据。

例如:long a=123456;

(2010-03-23 21:18)

标签:

杂谈

fopen函数用来打开一个文件,其调用的一般形式为:

文件指针名=fopen(文件名,使用文件方式);

其中,

“文件指针名”必须是被说明为FILE 类型的指针变量;

“文件名”是被打开文件的文件名;

“使用文件方式”是指文件的类型和操作要求。

“文件名”是字符串常量或字符串数组。

例如:

FILE *fp;

fp=('file a','r');

其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。

又如:

FILE *fphzk

fphzk=('c:\\hzk16','rb')

其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\

”中的第一个表示转义字符,第二个表示根目录。

使用文件的方式共有12种,下面给出了它们的符号和意义。

文件使用方式

意义

“rt”

只读打开一个文本文件,只允许读数据

“wt”

只写打开或建立一个文本文件,只允许写数据

“a

标签:

杂谈

1.文件的打开

//打开文件的函数声明

FILE*fopen(const char*filename,const char*mode);

其中的 mode有12中组合,可以不加t因为文件默认以文本形式打开。

需要注意的就是r+,w+,a+。虽然都是一读写的方式打开文件,其实还是由很大的区别的。其中以r+,a+,打开的文件,前提是必须存在。而w+则会创建新的文件(在打开文件不存在的情况下)。

标签:

杂谈

一、文本文件与二进制文件的定义

大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。

简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。

从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8),基于字符嘛,每个字符在具体编码中是固定的,ASCII码是8个比特的编

码,UNICODE一般占16个比特。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较

熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来

记录bmp文件头的长度。。。大家可以看出来了吧,其编码是基于值的(不定长的,2、4、8字节长的值都有),所以BMP是二进制文件。

二、文本文件与二进制文件的存取

标签:

杂谈

在C中引入了流(stream)的概念。它将数据的输入输出看作是数据的流入和流出,这样不管是磁盘文件或者是物理设备(打印机、显示器、键盘等),都可

看作一种流的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的操作,就是数据的流入和流出。这种把数据的输入输出操作对象,抽象化为一

种流,而不管它的具体结构的方法很有利于编程,而涉及流的输出操作函数可用于各种对象,与其具体的实体无关,即具有通用性。

在C中流可分为两大类,即文本流(text stream)和二进制流(binary

stream)。所谓文本流是指在流中流动的数据是以字符形式出现。在文本流中,'\n'被换成回车CR和换行LF的代码0DH和0AH。而当输出时,则0DH和0AH本换成'\n'。

二进制流是指流动的是二进制数字序列,若流中有字符,则用一个字节的二进制ASCII码表示,若是数字,则用一个字节的二进制数表示。在流入流出时,对\n符号不进行变换。例如2001这个数,在文本流中用其ASCII码表示为:

'2' '0' '0' '1'

| | | |

50 48 48 49

共占4字节。而在二进制流中则表示为:00000111 11010001 用十六进制就是07D1。只占两字节。

由此看出,二进制流比文本流节省空间

标签:

杂谈

1.

void Invalidate( BOOL bErase = TRUE );

标签:

杂谈

1、

SM_ARRANGE:

用于说明系统如何安排最小化窗口,根据显示器的不同系统数据可能有所不同。其包含一个起始位置和方向。关于在程序中怎么使用我还没有见个这样的代码。

起始位置可为下列值之一:

ARW_BOTTOMLEFT:开始在左下角的屏幕(默认值)。

ARW_BOTTOMRIGHT:开始在右下角的屏幕(相当于ARW_STARTRIGHT)。

ARW_HIDE:在屏幕可见区域隐藏并最小化窗口。

c语言boy,cboy相关推荐

  1. Go语言的错误异常处理机制及其应用

    一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...

  2. Go 知识点(19)— Go 语言中的野指针

    野指针是一种指向内存位置是不可知的指针,一般是由于指针变量在声明时没有初始化所导致的.在 Go语言中,布尔类型的零值为 false,数值类型的零值为 0,字符串类型的零值为 "", ...

  3. gcc 自动识别的文件扩展名,gcc/g++ -x 选项指定语言,不同 gcc 版本 -std 编译选项支持列表

    对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器. 对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件 对于以 .cpp 为扩展名的文件,GCC ...

  4. OpenCV 笔记(07)— Mat 对象输出格式设置(Python 格式、CSV 格式、NumPy 格式、C 语言格式)

    首先是下面代码中将要使用的 r 矩阵的定义.需要注意,我们可以通过用 randu 函数产生的随机值来填充矩阵, 需要给定一个上限和下限来确保随机值在期望的范围内. Mat r = Mat(2, 3, ...

  5. 利用牛顿法求平方根-Go语言实现

    牛顿法解释 百度的解释如下: 通俗的解释就是:多数方程不存在求根公式,牛顿提出了一种用迭代来求方程近似根的方法.思路就是不断取切线,用线性方程的根逼近非线性方程f(x)=0f(x)=0f(x)=0的根 ...

  6. 翻转二叉树 c语言实现 递归 栈 队列

    前言 题目比较好理解,就是翻转二叉树 代码 c语言实现 #include<stdio.h> #include<stdlib.h> #include<string.h> ...

  7. 字符串全排列的问题 python和c语言实现

    前言 这是一个的经典的问题 设计一个算法,输出一个字符串字符的全排列. 比如,String = "abc" 输出是"abc","bac",& ...

  8. 快速排序的递归和非递归实现 c语言版本

    代码 挖坑法 解释 选取一个关键字(key)作为枢轴,一般取整组记录的第一个数/最后一个,这里采用选取序列第一个数为枢轴,也是初始的坑位. 设置两个变量i = l;j = r;其中l = 0, r = ...

  9. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

最新文章

  1. 《Storm实时数据处理》一2.6 统计与持久化日志统计信息
  2. python编程字典100例_python中字典(Dictionary)用法实例详解
  3. 请解释Spring Bean 的生命周期?
  4. HDU2068(错列排序)
  5. 加密芯片算法移植方案的优点
  6. 计算机网络 - 物理层
  7. Python入门--列表,字典,元组,集合总结
  8. 力扣两数之和jAVA_力扣----1.两数之和(JavaScript, Java实现)
  9. Android茶叶进销存源码分享
  10. [Linux]history命令用法详解
  11. 服务器数据恢复过程(服务器数据恢复通用方法)
  12. 移动支付这回真的逆天了!什么才是真正的资本运作?让微信春晚来告诉你!...
  13. Civil3D二次开发之撤销(Undo\Ctrl+Z)命令
  14. pdf和word等文档添加水印
  15. 趣图:道高一尺,魔高一丈
  16. 浏览器绑定快捷键KeyboardEvent
  17. 使用PySide2创建图形化Python程序时:Available platform plugins are: direct2d, minimal, offscreen, windows
  18. 贴片陶瓷电容的NPO、C0G、X7R、X5R、Y5V、Z5U辨析
  19. OpenGL之基本图元
  20. 谈我们为什么学不好编程2——你是否已进入“等死模式”?

热门文章

  1. Java Version Mismatch
  2. 嵌入地图跳转高德地图_各种地图跳转导航
  3. 在线短视频去水印工具网站
  4. 【IJCAI 2016】Modularity Based Community Detection with Deep Learning 阅读小记
  5. 电影推广思路详解,最权威的电影推广方案
  6. 信用社pb通用记账_2018年农村信用社高频考点:会计账户
  7. 在线心语日历批量生成工具
  8. [显卡直通]Server 2016/2019 Hyper-V显卡直通Win10教学及过程中会遇到的问题搜集以及详解-第一章DDA设备以及准备
  9. web前端html5+css3学习笔记(2)
  10. vue 视频截图获取第一帧或者某一帧