[c/c++]小议几个写缓冲区的函数

原创 2013年12月04日 17:21:18
1. strncpy
char *strncpy(char *dest, char *src, size_t num);

strcpy没得说,它自动补NULL,而且你得给他足够大的空间,一般是读src的长度n然后动态分配(n + 1)大小的内存。
strncpy呢,他的行为是,复制src的前num个字符到dst,如果src的长度大于等于num,则不补NULL;如果小于num,则剩余的部分都将被写成NULL。
所以,如果这样定义缓冲区:
const int BUFFSIZE = 256;
char buff[BUFFSIZE];

无论如何传进去的n最大只能到(BUFFSIZE - 1)
然后最后一位手动补NULL,即buff[BUFFSIZE - 1] = '\0';

2. GetWindowText
int GetWindowText(HWND hWnd,LPTSTR lpString,int nMaxCount);

WIN32API。取指定窗口的标题,也是要写缓冲区的。
将hWnd的标题复制到缓冲区中,如果标题长度小于nMaxCount 则完全复制到缓冲区最后补一个NULL,如果大于等于nMaxCount 则复制前nMaxCount个字符,不补NULL。如果执行成功,返回拷贝字符串的长度(不包括NULL),如果缓冲区传入NULL则返回标题长度。也就是说,可以传进去两个NULL来看一下长度,然后动态分配。
除非你事先获得了长度,否则建议还是跟上个函数一样,传入(nMaxCount - 1)然后再手动补NULL

3.GetCurrentDirectory

DWORD GetCurrentDirectory(DWORD nBufferLength, LPTSTR lpBuffer);

WIN32API。取得运行目录。
将运行目录写入缓冲区,目录长度小于nBufferLength则完全复制并补个NULL;否则不写。
如果执行成功,缓冲区够用的情况下返回拷贝字符串的长度(不包括NULL),否则返回需要的缓冲区大小(包括NULL)。

可以传入两个NULL来看大小。也可以使用MAXPATH宏,因为windows下路径的最大长度是确定的。

还有个小建议,使用相对路径。c/c++库函数的相对路径可以不写。win32api中写做".\\"。

版权声明:License: CC BY-NC-SA 4.0

关于C++流的缓冲区的讨论

现在来讨论一下关于C++的输入输出流的缓冲区问题 一般 C++ 我们使用输出流cout都会用到endl这个操纵符。是吧 C++里有几个可以来控制缓冲区刷新的操纵符。 endl ...

SJTU->SE->ICS->LAB9 Tiny Shell

实在是不想再继续看大雾了,这讲的都是啥。于是就作死地试着把win7换成了win8.1,问题是真多- -在写这个日志的时候,我的输入法每打一个字,整个chrome就会不响应几秒钟,我整个人都不好了。于是...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

小议C和C++中的const类型限定符

废话不多说,先上一段网上出现频率很高的代码如下:

C\C++几个内存处理函数

1、memcpy void * memcpy ( void * destination, const void * source, size_t num ); 复制内存块 从sour...
  • hnu_zxc
  • hnu_zxc
  • 2011年12月26日 20:59
  • 5311

C/C++面试题--数组作为函数参数的几个问题

void fun(int array[10]) { int *p = &array[-1]; //p = &array[0] - 1; cout
  • jzp12
  • jzp12
  • 2012年06月22日 20:58
  • 762

介绍几个关于C/C++程序调试的函数

最近调试程序学到的几个挺有用的函数,分享一下,希望对用C/C++的朋友有所帮助! 1. 调用栈系列 下面是函数原型: 1 2 3 4 #include "exec...

记录C/C++的几个标准以及main()函数的使用

估计是跟着谭浩强学的C语言导致的,现在Gcc编译各种不通过让我很郁闷,不得已又得拿起书来重新学一遍,真正发现C语言没有那么简单。当初学的时候被坑了而已。 for(int i = 0;i...

C/C++面试常见的几个库函数详解(strcpy,memcpy,memset,atoi...)

前言在面试中,常常会被问到几个库函数的实现,虽然代码很短,涉及的细节却特别多,因此特别受面试官青睐,所以要把他们熟记于心,方能应对自如。strcpy()原型声明:char strcpy(char de...

C/C++面试常见的几个库函数详解(strcpy,memcpy,memset,atoi...)

C/C++面试常见的几个库函数详解(strcpy,memcpy,memset,atoi...) 标签: strcpy面试memcpymemsetatoi 2016-03-04 14:44 1629...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[c/c++]小议几个写缓冲区的函数
举报原因:
原因补充:

(最多只允许输入30个字)