Ir ao conteúdo

Posts recomendados

Postado

Boas, fiz um programa bem simples apenas para verificar a igualdade entre 2 strings, mas o meu compilador (visualStudio 2019) diz que tem erros na parte do "_Bool". Alguém pode explicar porquê e o que tenho de fazer para corrigir o problema?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()

{

	_Bool strings_iguais(char s1[], char s2[]);

	if (strings_iguais("casa", "casa"))
	{
		printf("\n As strings sao Iguais. \n");
	}
	else
	{
		printf("\n As strings nao sao Iguais. \n");
	}


	system("pause");

}


_Bool strings_iguais(char s1[], char s2[])
{
	int i = 0;

	while (s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0')
	{

		++i;
	}

	if (s1[i] == '\0' && s2[i] == '\0')
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

 

  • Curtir 1
Postado

@Infante98   teste esse aqui :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(){
    bool strings_iguais(char s1[], char s2[]);
    if (strings_iguais("casa", "casa"))
        printf("\n As strings sao Iguais. \n");
    else
        printf("\n As strings nao sao Iguais. \n");
    system("pause");
    return 0;
}
bool strings_iguais(char s1[], char s2[]){
    int i = 0;
    while (s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0')
        ++i;
    if (s1[i] == '\0' && s2[i] == '\0')
        return 1;
    else
        return 0;
}

 

  • Curtir 1
Postado

Assim funcionou para mim:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

bool stringsIguais(char a[], char b[]);

int main() {
    if (stringsIguais("casa", "casa")) {
        printf("As strings sao iguais. \n");
    } else {
        printf("As strings sao diferentes. \n");
    }

    return 0;
}

bool stringsIguais(char a[], char b[]) {
    int i = 0;

    while (a[i] == b[i] && a[i] != '\0') {
        ++i;
    }

    return (a[i] == '\0' && b[i] == '\0');
}

Foi executado no seguinte cenário:

Sistema: Linux 64 bits

Compilador: GCC 7.5.0

  • Curtir 1
Postado

image.png.755323445c2e20a7ac8bf58f3b201d12.png

 


Antes de declarar main() você deve declarar os protótipos das funções que vem a seguir no texto ou que estão em outros arquivos, algo como escrever

bool strings_iguais(char[], char[]);

veja o exemplo de @AdrianoSiqueira acima...
 

Assim o compilador sabe ao encontrar a função quais são os parâmetros e o valor de retorno. Não se costuma repetir os nomes dos argumentos porque não interessam nesse ponto.

 

Entenda que essa função poderia estar em outro arquivo, como strings-iguais.c por exemplo...

 

Não entendo a razão de usar um #include e uma biblioteca apenas para poder declarar algo como bool. Zero é falso. Pronto. Bastaria isso. Mas como você queria bool perdeu seu tempo duas vezes. Primeiro porque se tivesse declarado

int strings_iguais(char[], char[]);

já estaria certo desde antes. Mas como declarou _Bool ainda precisou aprender que era bool. E precisou aprender que precisava de um #include stdbool.h.

E você sempre poderia testar

if strings_iguais( "casa" "casa" )...

se retornasse 1 para true e zero para false por exemplo, desde os anos 70.

 

 

  • Curtir 1
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!