Ir ao conteúdo
  • Cadastre-se

C Erros em Programa com Strings


Infante98

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!