字符比较错误输出,C中没有比较

字符比较错误输出,C中没有比较,c,string,char,C,String,Char,C不是比较字符。我已经试过很多次了,但总是有问题 我的代码是 #include <stdio.h> #include <string.h> int main(){ int palavra[16]; int frase[201]; gets(palavra); gets(frase); printf("%s\n",palavra); printf("%s\n",frase); int i; int pala

C不是比较字符。我已经试过很多次了,但总是有问题

我的代码是

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


int main(){
    int palavra[16];
    int frase[201];
    gets(palavra);
    gets(frase);
    printf("%s\n",palavra);
    printf("%s\n",frase);
    int i;
    int palavrasNaFrase=0;
    int tamanhoPalavra=strlen(palavra);
    int tamanhoFrase=strlen(frase);
    printf("tamanho frase %d\n",tamanhoFrase);
    for(i=0; i<tamanhoFrase; i++){
        printf("i = %d\n",i);
        printf("caracter: %c\n",palavra[0]);
        printf("caracter: %c\n",frase[i]);
        if(frase[i] == palavra[0]){
            printf("C is not comparing characters\n");/*
            int j=i+1,k=1;
            int letrasIguais=1;
            int cont=1;
            while(cont<tamanhoPalavra){
                if(frase[j]==palavra[k]){
                    letrasIguais++;
                }
                j++;
                k++;
                cont++;
            }
            if(letrasIguais==tamanhoPalavra){
                palavrasNaFrase++;
            }*/
        }
    }
    //printf("%d\n",palavrasNaFrase);
    return(0);
}
出局

ANA

ANAGOSTADEUMABANANA

tamanho frase 19

i = 0

caracter: A

caracter: A

i = 1

caracter: A

caracter: O

i = 2

caracter: A

caracter: D

i = 3

caracter: A

caracter: A

i = 4

caracter: A

caracter: A

C is not comparing characters

i = 5

caracter: A

caracter: ©

i = 6

...

caracter: ­

0
进程返回0(0x0)执行时间:4.696秒 按任意键继续

他被窃听得如此厉害,我不知道该怎么办。
请有人帮帮我,如果有人能找到什么问题,为什么这么窃听。有太多不应该发生的错误和事情正在发生。我已经尝试和搜索了很多次,我总是发现使用string[position]==string2[position]逐字符比较字符串的方法是正确的,但在这个程序中不起作用,我不知道为什么会有这么多错误!请有人帮帮我,给我一盏灯!我做错了什么?谢谢你这样定义数组:

int palavra[16];
int frase[201];
虽然它保留了足够的空间,但在比较字符与字符时会出现一个问题:比较int与int(多字符与多字符),这可能是您在这里想要的(并且您可能会收到关于您忽略的指针类型的警告):

您必须将声明更改为使用
char

char palavra[16];
char frase[201];
如果编译时出现警告,您将获得预期的效果。修复警告也会修复您的代码(警告的摘录,多余的被编辑掉):


你调试过了吗?我们无法为您执行远程调试。当您显然没有进行任何调试时,您如何知道许多不应该发生的bug和事情发生了呢?不要使用
gets()
函数。从C11标准开始,它就被删除了&在此之前,它的用途已被弃用。我不知道如何调试。至少在你出现之前,你看过这个问题了吗?看看输出。看看输入。有点不对劲。输出显示¾、£、\8252;、等特征,♀, 字符串中不存在的。printf可以很好地处理字符串,但不能单独处理每个字符。在判断之前阅读问题并理解我看到的所有代码转储,您希望我们为您修复它吗?您还应该添加OP的代码由于格式说明符不正确而调用UB。@析构函数:做得更好:编译时带有警告,因此所有错误都会弹出。@FernandoHenrique:不要气馁。但下一次编译并阅读警告时,请修复您的代码,直到没有任何代码。谢谢,对此表示歉意。下次我会寻找警告,你会惊讶地发现有多少工业产品在编译时发出警告。许多开发人员公然无视它们,而是花数小时来猎杀虫子。别那样:)
if(frase[i] == palavra[0]){
char palavra[16];
char frase[201];
$ gcc -Wall toto.c
toto.c: In function 'main':
toto.c:8:10: warning: passing argument 1 of 'gets' from incompatible pointer type
     gets(palavra);
          ^
In file included from toto.c:1:0:
c:\gnatpro\7.4.2\x86_64-pc-mingw32\include\stdio.h:491:17: note: expected 'char *' but argument is of type 'int *'

          ^
In file included from toto.c:1:0:
c:\gnatpro\7.4.2\x86_64-pc-mingw32\include\stdio.h:491:17: note: expected 'char *' but argument is of type 'int *'
   char *__cdecl gets(char *_Buffer) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
                 ^
     ^
toto.c:11:5: warning: format '%s' expects argument of type 'char *', but argument 2 has type 'int *'
 [-Wformat=]
     printf("%s\n",frase);
     ^
toto.c:14:31: warning: passing argument 1 of 'strlen' from incompatible pointer type
     int tamanhoPalavra=strlen(palavra);
                               ^