天天看点

MFC中_stscanf, _stprintf, _T 的使用

1. 不管格式化串中是不是使用了%s,都应用_T.

    int i, j, k, l;

  _stscanf(szText, _T("%d.%d.%d.%d"), &i, &j, &k, &l);

因为不用_T直接就编译错误。

2.输出参数应该是指针。

TCHAR szText[] = _T("一.二.三.四");

    TCHAR szTmp[5];

    memset(szTmp, 0x00, sizeof(szTmp)/sizeof(TCHAR));

_stscanf(szText, _T("%s.%s.%s.%s"), szTmp[0], szTmp[1], szTmp[2], szTmp[3]);

这不会报编译错误,但运行会崩溃。

正确的方式:

_stscanf(szText, _T("%s.%s.%s.%s"), &szTmp[0],&szTmp[1],&szTmp[2],&szTmp[3]);

3.    TCHAR c = _T('a');

    TCHAR szText[20];

    _stprintf(szText, _T("%s"), c);

会出现崩溃,应该用

 _stprintf(szText, _T("%c"), c);

4.    TCHAR c = _T('中');

    TCHAR szText[20];

    _stprintf(szText, _T("%c"), c);

%c在unicode环境下就表示2个字节了,记住一点:%c表示格式化一个符号,跟字节数无关

5. 单个字符也要用_T, _T('中'),,,字符间比较自然也要用 _T('c') >= _T('a')

6. BYTE类型可以用%d格式化

    BYTE b = 255;

    TCHAR szText[20];

    _stprintf(szText, _T("%d"), b);

    OutputDebugString(szText);