1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
| #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<windows.h> #include<tchar.h> #include<stdarg.h>
int CDECL MessageBoxPrintfA(char *szCaption, char *szFormat, ...);
int CDECL MessageBoxPrintfW(wchar_t *szCaption, wchar_t *szFormat, ...);
int CDECL MessageBoxPrintf(TCHAR *szCaption, TCHAR *szFormat, ...);
void test1() { int a = 12; char szBuffer[100] = { 0 };
sprintf(szBuffer, "我爱你%d", a); MessageBoxA(NULL,szBuffer,"ASCII 不安全版本",MB_OK);
_snprintf(szBuffer, 100,"我爱你%d", a); MessageBoxA(NULL, szBuffer, "ASCII 安全版本", MB_OK);
}
void test2() { int a = 12; wchar_t szBuffer[100] = { 0 };
swprintf(szBuffer,100, L"我爱你%d", a);
MessageBoxW(NULL, szBuffer, L"Unicode 版本", MB_OK);
_snwprintf(szBuffer,100,L"我爱你%d", a);
MessageBoxW(NULL, szBuffer, L"Unicode 版本", MB_OK);
}
void test3() { int a = 12; TCHAR szBuffer[100] = { 0 }; _stprintf(szBuffer, TEXT("我爱你%d"), a); MessageBox(NULL, szBuffer, TEXT("通用不安全版本"), MB_OK);
_sntprintf(szBuffer, 100, TEXT("我爱你%d"), a); return MessageBox(NULL, szBuffer, TEXT("通用安全版本"), MB_OK);
} void test4() {
MessageBoxPrintf(TEXT("MessageBoxPrintf 标题"), TEXT("我爱你%d%d"), 13, 14); } void test5() { MessageBoxPrintfA("MessageBoxPrintf 标题", "我爱你%d%d", 13, 14); }
void test6() { MessageBoxPrintfW(L"MessageBoxPrintf 标题", L"我爱你%d%d", 13, 14); }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
test5(); test6(); }
int CDECL MessageBoxPrintf(TCHAR *szCaption, TCHAR *szFormat, ...) {
va_list pArgs; TCHAR szBuffer[1024]; va_start(pArgs, szFormat);
_vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), szFormat, pArgs);
va_end(pArgs);
return MessageBox(NULL, szBuffer, szCaption, MB_OK); }
int CDECL MessageBoxPrintfA(char *szCaption, char *szFormat, ...) {
va_list pArgs; char szBuffer[1024]; va_start(pArgs, szFormat);
_vsnprintf(szBuffer, sizeof(szBuffer) / sizeof(char), szFormat, pArgs);
va_end(pArgs);
return MessageBoxA(NULL, szBuffer, szCaption, MB_OK); }
int CDECL MessageBoxPrintfW(wchar_t *szCaption, wchar_t *szFormat, ...) {
va_list pArgs; wchar_t szBuffer[1024]; va_start(pArgs, szFormat);
_vsnwprintf(szBuffer, sizeof(szBuffer) / sizeof(wchar_t), szFormat, pArgs);
va_end(pArgs);
return MessageBoxW(NULL, szBuffer, szCaption, MB_OK); }
|