gpt4 book ai didi

c - C 中的 ASCII 字符

转载 作者:行者123 更新时间:2023-11-30 20:14:49 28 4
gpt4 key购买 nike

我正在尝试将西里尔字母中的字符保存在一个字符中。当我从控制台获取字符串时,它成功地将其保存在字符数组中,但仅仅初始化它似乎不起作用。尝试运行时出现“programName.exe 已停止工作”。

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <Windows.h>
#include <stdlib.h>

void test(){
char test = 'Я';
printf("%s",test);
}

void main(){
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
test();
}


fgets ( books[booksCount].bookTitle, 80, stdin ); // this seems to be working ok with ascii.

我尝试使用 wchar_t 但得到相同的结果。

最佳答案

如果您使用的是俄语 Windows,它使用 Windows-1251 codepage默认情况下,您可以使用旧的 printf 打印编码为单个字节的字符,但您需要确保源代码使用相同的 cp1251 字符集。不要另存为 Unicode。

但首选方式应该是使用 wprintf带有宽字符串

void test() {
wchar_t test_char = L'Я';
wchar_t *test_string = L"АБВГ"; // or LPCWSTR test_string
wprintf(L"%c\n%s", test_char, test_string);
}

这次您需要将文件保存为 Unicode(UTF-8 或 UTF-16)

UTF-8 可能更好,但在 Windows 上更棘手。此外,如果您使用 UTF-8,则无法使用 char 来存储 Я,因为它需要超过 1 个字节。您必须使用 char* 代替

请注意main must return int, not void ,并且上面的 fgets 必须从某个函数内部调用

关于c - C 中的 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23855727/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com