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/