将char / wide char附加到c-string

时间:2012-05-23 17:40:20

标签: c

#ifndef UNICODE
#define UNICODE
#endif

#include <stdio.h>
#include <Windows.h>

int main(void)
{
   TCHAR greeting[50] = L"Hello world"; 
   TCHAR exclamation=L'!';

 //????

wprintf("%s",greeting);

return 0;
}

应该做什么,以便输出会带有感叹号问候?指令 greeting[wcslen(greeting)]=exclamation;用汉字完成数组的剩余部分 PS。我只需输出“greeting”变量,因此//????以外的代码是不可更改的。

1 个答案:

答案 0 :(得分:3)

greeting[wcslen(greeting)]处有一个空终止符L'\0',表示字符串的结尾。除了这一点之外还有什么是未定义的(中文字符似乎在你的情况下)。你需要做的是这样的空终止符移动到数组中的下一个位置。

TCHAR greeting[50] = L"Hello world"; 
TCHAR exclamation=L'!';

greeting[wcslen(greeting)+1] = L'\0';        
greeting[wcslen(greeting)] = exclamation;

请注意,您必须按此顺序执行此操作,否则wcslen将提供不同的(不确定的)值。如果您使用了标准追加功能,那么这将为您完成。