-1
#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”变量,所以除了 of 之外的代码//????是不可更改的。

4

1 回答 1

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会给出不同的(不确定的)值。如果您使用标准的附加功能,这将为您完成。

于 2012-05-23T17:43:20.397 回答