以下代码片段在执行strncpy函数时以异常结束:
#define MAX_FILENAME_LEN 127
typedef struct {
unsigned long nameLength;
char name[MAX_FILENAME_LEN + 1];
} filestructure;
char *fileName;
strncpy( fileName, filestructure->name, MAX_FILENAME_LEN );
*( fileName + MAX_FILENAME_LEN+1 ) = 0;
Run Code Online (Sandbox Code Playgroud)
Ayone知道什么可能出错?在文件结构中,我有一个50个字符长的文件名,所以它在界限内...我真的有点迷失了可能导致这个简单代码的问题...
您尚未为目标缓冲区分配空间,并且fileName未初始化.所以你试着复制到某个地方.你应该分配内存然后打扰释放它.
char *fileName = new char[MAX_FILENAME_LEN + 1];
strncpy(...);
*(...) = 0;
doStuffWithTheBuffer( fileName );
delete[] fileName;// free memory
Run Code Online (Sandbox Code Playgroud)
此外,如果你有一个大小为N + 1的缓冲区,并希望复制N个字节最大值并且空终止缓冲区,你应该这样做
*(buffer + N) = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |