求高人写一段C语言程序,运行输出“鞠凯静我爱你"但是在程序里看不出

求高人写一段C语言程序,运行输出“鞠凯静我爱你"但是在程序里看不出这六个字

#include<stdio.h>

#include<stdlib.h

void main() {

char str[20]={0xbe,0xcf,0xbf,0xad,0xbe,0xb2,0xce,0xd2,0xb0,0xae,0xc4,0xe3,0}; 

printf("%s\n",str);


TESTEND: printf("\n\n"); system("pause");

}

追问

为什么用手机运行是特殊符号

追答

手机的中文可能是UTF-8格式的,可以将数组修改成:
char str[40]={ 0xef,0xbb,0xbf,0xe9,0x9e,0xa0,0xe5,0x87,0xaf,0xe9,0x9d,0x99,0xe6,0x88,0x91,0xe7,0x88,0xb1,0xe4,0xbd,0xa0,0 };
试试

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-18
就算程序里能看出又怎样。她还能反汇编么。。
第2个回答  2017-05-18
#include <stdio.h> 
int main() 
{
char buf[]={0xBE,0xCF,0xBF,0xAD,0xBE,0xB2,0xCE,0xD2,0xB0,0xAE,0xC4,0xE3,0x00};
 printf("%s",buf);
 return 0;
}

//或者,这个也可以。
#include <stdio.h> 
int main() 
{
   printf("\xBE\xCF\xBF\xAD\xBE\xB2\xCE\xD2\xB0\xAE\xC4\xE3");
 return 0;
}

第3个回答  2017-05-18

最简单的方法

#include <stdio.h>
int main()
{
    char s[20] = {0xBE, 0xCF, 0xBF, 0xAD, 0xBE, 0xB2, 0xCE, 0xD2, 0xB0, 0xAE, 0xC4,0xE3};
    puts(s);
    return 0;
}

12个值是这六个字的gbk编码。

想更复杂 可以通过各种位运算操作,或者算数操作,来生成这12个值。

追问

运行不出来啊

追答

你用的什么工具

运行结果是什么?

可以试试在结尾加一个system("pause");


补充一下 如果要手机运行 那么需要改成

0xE9, 0x9E, 0xA0, 0xE5, 0x87, 0xAF, 0xE9, 0x9D, 0x99, 0xE6, 0x88, 0x91, 0xE7, 0x88, 0xB1, 0xE4, 0xBD, 0xA0

手机是utf-8编码 不是gbk 

三个字节一个汉字。

相似回答
大家正在搜