_stprintf()在c++和MFC中只读取第一个字符

_stprintf() read only first char in C++ and MFC

本文关键字:读取 第一个 字符 MFC stprintf c++      更新时间:2023-10-16

我在我的MFC应用程序中有一个文本编辑控件,我正试图读取控件中写入的文本,以便在我的硬盘上写入文件。

问题是它只读取第一个字符而不是整个字符串。

 tchar fname[100];   
 _stprintf(fname, _T("%Sfile-%d.bmp"), pDoc->swap_text, swap);
save_image_uncompressed( (const unsigned char*) pDoc->image[idx], fname, pDoc->m_buf[idx].lpbmi[frm_idx]->bmiHeader.biHeight,
                        pDoc->m_buf[idx].lpbmi[frm_idx]->bmiHeader.biWidth,
                        pDoc->m_buf[idx].lpbmi[frm_idx]->bmiHeader.biWidth*3,
                        0);

例如,如果在编辑控件中写入:name_of_directory/,那么它将读取:"*n*file-1.bmp",这是name_of_directory/string的第一个字符。

我试图使用

_stprintf(fname, _T("%Sfile-%d.bmp"), pDoc->swap_text.GetString(), swap);

但是我也有同样的问题。

你能帮我一下吗?

您似乎使用了错误的格式代码:

_stprintf(fname, _T("%sfile-%d.bmp"), ...)
//                   ^^

您应该使用%s(小写)而不是%S(大写)。