您的位置:首页 > 其它

scanf注意事项

2015-11-10 22:41 295 查看
// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <crtdbg.h>

int main(int argc, char* argv[])
{
    char szBuf[6] = {'1', '1', '1', '1', '1', '1'};

    /**
    -	szBuf	0x0109ff78 "111111烫?	.	.g"
	[0x0]	0x31 '1'
	[0x1]	0x31 '1'
	[0x2]	0x31 '1'
	[0x3]	0x31 '1'
	[0x4]	0x31 '1'
	[0x5]	0x31 '1'
    */
    
    /// scanf限制输入n个字符, 但是会在缓冲区中多加一个'\0'
    /// 所以要为scanf输入多留一个\0的缓冲区空间, 防止溢出
    scanf("%5s", szBuf);

    /**
    -	szBuf	0x0109ff78 "22222"
	[0x0]	0x32 '2'
	[0x1]	0x32 '2'
	[0x2]	0x32 '2'
	[0x3]	0x32 '2'
	[0x4]	0x32 '2'
	[0x5]	0x00 ''
    */

	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: