C 无效字符测试

C 无效字符测试,c,encoding,character-encoding,C,Encoding,Character Encoding,当我用“é”执行时,它被接受,尽管测试!救命 #include <stdio.h> #include <string.h> int main () { char ch[10]; int i,k,k1; do { k=0; i=0; printf("Write a sentence without accentuated letters:\n"); scanf("%s",ch); k1=strlen(ch);

当我用“é”执行时,它被接受,尽管测试!救命

#include <stdio.h>
#include <string.h>

int main ()
{
    char  ch[10];
    int i,k,k1;

do
{
    k=0; i=0;   
    printf("Write a sentence without accentuated letters:\n");
    scanf("%s",ch);
    k1=strlen(ch);
    while ((k==0)&&(i<k1))
    {
        if (ch[i]=='é') k=1;
        i++;
    }
}   
while (k==1);

    return 0;
}
#包括
#包括
int main()
{
char-ch[10];
inti,k,k1;
做
{
k=0;i=0;
printf(“写一个没有重音字母的句子:\n”);
scanf(“%s”,ch);
k1=strlen(ch);

而((k==0)&&(i问题可能在于编码。
é
可以有不同的数字表示形式,具体取决于所使用的编码标准。如果源代码编辑器、编译器和命令行使用不同的编码,事情将永远不会以这种方式工作。您可能希望切换到UTF-8。

通常最好用英语发布代码这里。好的,printf(“Donner une chaine de caracteres vide de caractères accentuées:\n”)——意思是--printf(“写一个没有重音字母的句子:\n”);很抱歉用了法语!请提供更多信息:您使用的是什么操作系统,您的源代码是什么?您的终端?如果您的源代码是拉丁文1,而您的输入代码是utf8,则无法工作。同样,如果您的源代码是拉丁文1,而您的终端代码是cp850(就像通常在windows上一样)