[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 ...

VS2010基于对话框的MFC串口通信简明例程

本例程是在VS2010环境下,使用MFC做的是一个简单的串口通信程序。欢迎交流。 程序源码(含一个虚拟串口软件):http://download.csdn.net/detail/nnnnnnnnnnn...

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

void fun(int array[10]) { int *p = &array[-1]; //p = &array[0] - 1; cout<<"function:fun()"<<endl...
  • jzp12
  • jzp12
  • 2012-06-22 20:58
  • 727

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

1、memcpy void * memcpy ( void * destination, const void * source, size_t num ); 复制内存块 从sour...

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

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

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

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

[zz] 站在面相对象角度小议C++

http://www.ltesting.net/html/67/n-112967.html  以下都是我个人对C++的评述。主以评述C++的面相对象特性。及对C的扩展的内容。作为一个中间语言C是很成功...

.c .h文件小议

好久没有更新文章,其实一直想发表,也写过一些稿子,但是,最后还是放弃了。       好了,言归正转,我们来讨论今天的话题。       个人认为,就这话题而言,我现在只能是飘在水面上和大家讨论讨论我...

C/C++中的缓冲区溢出基础

  • 2011-04-14 18:07
  • 103KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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