c - 如何在 C 中创建一个 unicode 变量?
问题描述
我想编写一个程序,如果用户输入 3s,程序可以在控制台中打印字符“”,用于输入 kh 输出“”,用于输入 10c 输出“”等。我有一个来自This Wikipedia page的 unicode 列表。
#include <stdio.h>
#include <string.h>
typedef struct card {
int val;
char suite;
} card;
void Take(card myCard[]);
void Display(card Cards[], int num);
void main()
{
card myCards[13];
int remaining = 13;
printf("Enter you cards:");
Take(myCards);
printf("Your cards are:");
Display(myCards, remaining);
while(remaining > 0)
{
remaining--;
}
}
void Take(card myCard[])
{
int i;
for(i = 0; i < 13; i++)
scanf("%d%c", &myCard[i].val, &myCard[i].suite);
}
void Display(card cards[], int num)
{
char unicode[7];
int i = 0;
for(i = 0; i < num; i++)
{
strcpy(unicode, "\u1F0");
switch(cards[i].suite)
{
case 's':
strcat(unicode, "A");
break;
case 'h':
strcat(unicode, "B");
break;
case 'b':
strcat(unicode, "C");
break;
case 'c':
strcat(unicode, "D");
break;
}
switch(cards[i].val)
{
case 10:
strcpy(unicode, "A");
break;
case 11:
strcpy(unicode, "B");
break;
case 12:
strcpy(unicode, "D");
break;
case 13:
strcpy(unicode, "E");
break;
default:
break;
}
printf("%s\t", unicode);
}
}
unicode 中有一个模式为 \u1f0XY,其中从 A 到 D 的 x 更改套件,从 1 到 E 的 Y 更改卡的值。我的方法是创建一个名为 Unicode 的字符串,其初始值为“\u1f0”。然后根据卡片是什么套件,我将在字符串后面附加正确的 x,然后根据值,我将在 Unicode 字符串后面加上正确的 y。也就是说,我的方法是创建一个变量字符串,其中包含要打印的字符串的正确 Unicode。但我收到了这个错误
错误:不完整的通用字符名称 \u1F0 strcpy(unicode, "\u1F0");
我怎样才能正确地创建一个变量 Unicode,或者我想它做的方式是不可能的?
解决方案
常量字符串文字是编译时的东西,它们的转义序列由编译器处理,不能在运行时设置。
在您的情况下,在案例中设置完整的 Unicode 字符可能更容易,而不是尝试分段构建它。
如在
switch(cards[i].suite)
{
case 's':
strcpy(unicode, "\u1F0A");
break;
case 'h':
strcpy(unicode, "\u1F0B");
break;
case 'b':
strcpy(unicode, "\u1F0C");
break;
case 'c':
strcpy(unicode, "\u1F0D");
break;
}
推荐阅读
- oracle - 如何在 Apache Superset 上安装 Oracle 驱动程序(没有 Internet 访问权限)
- android - 当有 CANCEL、SEND 按钮时,Accessibilityservice 无法从 USSD 响应中关闭 AlertDialog
- jquery - 如何使用 JQuery 对单个表列进行排序?
- vue.js - 计算数据包发送/接收时间
- laravel - Laravel 新星 | 箭头函数 | 计算属性在 Tool.vue 中不起作用
- java - 反应原生问题 firebase 消息传递
- face-detection - 我如何在 android 应用程序上进行虚拟试戴
- r - 当多边形小于栅格单元时,terra::extract 给出 NaN
- discord.js - 跟踪用户状态后发送服务器消息 (discord.js)
- android - 使用浮动视图访问其他应用程序上的剪贴板(android10及更高版本)