- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 c 中读取和打印宽字符的大写版本。这是我的代码:
#include <stdio.h>
#include <wctype.h>
#include <wchar.h>
#include <locale.h>
int main(){
wchar_t sentence[100];
setlocale(LC_ALL, "");
void Edit(wchar_t str[]);
printf("Enter sentence -> ");
wscanf(L"%[^\n]ls", sentence);
Edit(sentence);
getchar();
return 0;
}
void Edit(wchar_t str[]){
int i = -1;
while(str[++i])
if(iswalpha(str[i])) //get rid of whitespaces and other characters
putwchar(towupper(str[i]));
}
如果我像这样初始化字符串,实际上问题似乎出在 wscanf 中:
wchar_t sentence[] = L"è";
无需阅读或询问字符串即可编辑它,它有效。
我使用的是 Windows 10 和美国国际键盘输入法,所以要输入 'è',我必须按 ` + e。但是我也尝试用ctrl+v复制粘贴,但是没有用。我将 MINGW 与 GCC 编译器版本 6.3.0 一起使用。我也在我的 MacBook 上试过了,但没有用。
问题是,如果我输入“kèy”,我希望输出“KÈY”。相反,我得到“KSY”。我不知道为什么 'è' 输出 'S' 但我尝试了其他人声并且我得到了相同的随机字符。但是,如果我将字符串初始化为“kèy”,我会得到“KÈY”。
更新
我将 wscanf 编辑为:
wscanf(L"%ls", sentence);
它适用于我的 MacBook,但不适用于 Windows!同样以这种方式我无法输入空格,因为 wscanf 在第一个空格处停止。
更新 2
我发现了一些非常有趣的东西:使用此代码段:
int main(){
setlocale(LC_ALL, "");
wchar_t frase[100];
fwide(stdin, 1);
wscanf(L"%ls", frase);
wprintf(L"%ls", frase);
return 0;
}
我找到了 this table当我输入 'è' 时,我得到 S,这就是 Win 列所描述的内容。所以我试着输入 Þ,但我得到了 'è'!我认为问题出在 cmd 的代码上,我使用的是页面代码:850
我找到了解决方案我使用 system("chcp 1252")
来更改字符集并且成功了!
最佳答案
不要使用 wscanf
使用 fgetws
- 这将允许您读取空白并防止缓冲区溢出。一般来说,它的最佳实践(尤其是在使用用户提供的输入时)可以防止缓冲区溢出。我在下面编辑了您的代码。
int main(){
wchar_t sentence[100];
setlocale(LC_ALL, "");
void Edit(wchar_t str[]);
printf("Enter sentence -> ");
fgetws(sentence,100,stdin);
Edit(sentence);
getchar();
return 0;
}
void Edit(wchar_t str[]){
int i = -1;
while(str[++i])
if(iswalpha(str[i])) //get rid of whitespaces and other characters
putwchar(towupper(str[i]));
}
您可能还想定义缓冲区大小,并适本地分配和释放内存。
关于c - 读取和打印宽字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009252/
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (x, y) 坐标线。 关于language-agnostic -
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
有没有办法显示自定义宽度/高度的YouTube视频? 最佳答案 在YouTube网站上的this link中: You can resize the player by editing the obj
如何从此表单获取数据(数据的长表示): import pandas as pd df = pd.DataFrame({ 'c0': ['A','A','B'], 'c1': ['b',
我在让宽度为 900px 的页面在宽度低于 900px 的分辨率下看起来不错时遇到了一些麻烦。这包括智能手机等移动设备。看起来我在页面上放大了,但无法滚动或缩小。我的页面包装器被定义为以屏幕为中心。这
我有一个包含一个表的 div,它有另一个带有动态变化文本的 div。div 有样式 overflow: hidden; white-space: nowrap; text-overflow: elli
我一直在愚弄下面的html代码。我已将 div id ="mainWide"设置为 2500 像素的宽度,这比我的屏幕还宽,我希望在主浏览器窗口中有一个水平滚动条,而不是在 div block 本身中
当我的屏幕浏览器窗口在 992px-1199px 之间时,我的文章元素比它们的父 div (.wrapper) 更宽。所以在这个屏幕宽度下,面板重叠并且看起来不对。 在所有其他屏幕宽度下,我的代码都准
我在对齐某些行时遇到了一些问题。我正在显示一个占据视口(viewport) 100% 高度的部分。因此,当您在屏幕上查看此部分时,您只会看到此部分。 在这个部分中,我有一个标题和副标题。标题应显示在节
为什么表单输入字段比其父 div 宽?宽度应用于文本 div,但不应用于其中包含表单字段的 div。为什么会这样? See the livecode here. .parent { width:
我想让这个标题 100% 宽。我在 jsfiddle 上试过这个,但是左边和右边还有一些余量。 CSS: #header { background: url("../img/top-bg.png
我的页面宽度有问题。无论我尝试什么,它的左边或右边都有白边(默认情况下在右边,如果我使用 margin-right:0 则在左边)。如果我使用 margin:0 比它留在右边。尝试了我所知道的一切,但
我有一个带有背景图片的宽 div。 div 的宽度为 1100 像素,当浏览器窗口小于该宽度时,会出现滚动条。有什么办法可以避免滚动条吗?那不是任何黑客。现在我知道我可以把它放在 body image
我有一个您可以访问的应用程序 here .当您打开应用程序时,只需单击加号按钮,您就会看到一个带有搜索栏的模态窗口。 现在请执行这两个搜索: 搜索 1:AAA 搜索 2:AAE 您会看到,在 AAE
这个问题在这里已经有了答案: Does element width include padding? (5 个答案) 关闭 7 年前。 HTML CSS .wrap{widt
我正在尝试在工具栏中创建一个自定义显示,类似于 Xcode 工具栏中心的信息 Pane 。 我们如何创建一个宽度超过 32 点的 NSToolbarItem? 框架始终将其限制为 32 点,即使最小和
我想将df1转换成df2 旧示例数据框 df1 df1 长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359
我正在使用 JavaScript 代码在 FireBase/FireStore 中上传图像。 核心功能已经可以运行,我可以上传,但我还需要在上传之前检查图像的大小。这就是我很乐意获得帮助的地方。 以下
如何在 Tkinter 中设置/更改 ttk.Separator 对象的长度/宽度? ttk.Separator(self, orient='horizontal').grid(c
我有一个简单的问题。为什么 a 不会自动调整其内容的大小?像这样: Test 返回 width:100%,尽管我希望“Test”这个词简单地居中。有什么想法吗? 最佳答案 您的问题与 HT
我是一名优秀的程序员,十分优秀!