我正在使用Visual Studio 2022社区。
由于某些原因,我使用OutputDebugString()处理很长的字符串。有时候,它不起作用。
我发现了什么。
当字符串长度大于1024 * 32时,OutputDebugString()不起作用。
为了让这样长的字符串与OutputDebugString()一起工作,我必须在字符串的末尾添加2个NULL。
这是预期的行动吗??
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
void testOutputDebugging( int sizeBuf ) {
TCHAR *buf = (TCHAR *)calloc( sizeBuf * sizeof( TCHAR ), 1 );
for( int i = 0; i < sizeBuf - 1; i++ )
buf[ i ] = _T( 'A' );
TCHAR buf2[32];
_stprintf_s( buf2, 32, _T( "\nsize=%d\n" ), sizeBuf );
OutputDebugString( buf2 );
OutputDebugString( buf );
OutputDebugString( buf2 );
free( buf );
}
int main() {
testOutputDebugging( 1024 );
testOutputDebugging( 1024 * 16 );
testOutputDebugging( 1024 * 17 );
testOutputDebugging( 1024 * 32 );
return 0;
}
字符串
我用VS2022运行了。结果屏幕截图如下所示..
的数据
1条答案
按热度按时间dxxyhpgq1#
我发现从字符串中删除'\r'解决了这个问题。当字符串包含'\r'字符时,函数OutputDebugString()有时只显示20个字符,但当我扫描字符串并将'\r'替换为空格时,我可以在一次OutputDebugString()调用中显示500多个字符。