c - 比较字符串和包含土耳其字符的用户输入时,strcmp 函数不起作用

标签 c string compare

char *x="Çankırı";
char *y=malloc(sizeof(char)*25);
scanf("%s",y);

if(strcmp(x,y) == 0)
    printf("A");
else
    printf("%s",y);

我为 y 输入“Çankırı”,但其他部分运行。如何比较这些字符串?

Windows10,代码块。

编辑:我发现了一条线索。问题与 setlocale 函数有关。当我使用 setlocale(LC_ALL,"TURKISH") 时,其中一个字符串无法正常工作(输出不是 Çankırı, Ank2r2),如果我使用 setlocale(LC_ALL,"C"),则另一个字符串无法正常工作。我不知道如何解决它。

最佳答案

您可能需要使用接受“宽”字符的函数。例如:

#include <wchar.h>
wchar_t *x=L"Çankırı";
wchar_t y[25];
wscanf(L"%s",y);

if(wcscmp(x,y) == 0)
    wprintf(L"A");
else
    wprintf(L"%s",y);

关于c - 比较字符串和包含土耳其字符的用户输入时,strcmp 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542177/

相关文章:

Java CompareTo 没有返回好的结果

mysql - 比较2个大sql文件,找不同点恢复数据

java - java 中带有compareTo的迭代器

c - 在 C 中,在结束前包含 NULL 的内存块上调用 free() 是否安全?

c - 在c中通过套接字发送缓冲区长度和缓冲区

curl下载文件的C程序

c - 如何编辑节点?以及如何删除已修改的节点?

c++ - 在while循环中比较多个字符串

c# 包含字符串的一部分

r - 如何编辑所有列名以替换 R 中的某个字符?