Ir ao conteúdo
  • Cadastre-se
Estudante0123

C RESOLVIDO Compilando em alguns programas só

Recommended Posts

Olá, fiz um codigo, mas estou tendo problemas para compilar: pelo codeblocks não compila, mas em compiladores online (https://www.onlinegdb.com/online_c_compiler) compila. Como poderia proceder? Na hora de compilar pelo codeblocks, até vai, mas trava na parte de strcmp

if(strcmp(comando,"lim")==0){....

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

Está usando a biblioteca string.h?

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Estudante0123    então não é no strcmp que está travando  pois testei aqui e funciona normal do jeito que está ,  então se você puder postar o código todo ,  poderíamos  ver melhor o que está causando problema .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 O codigo em si é muito grande, mas resumidamente em cada if eu tenho um codigo semelhante ao abaixo. Quando eu compilo pelo Codeblocks não vai, mas em compiladores online roda de boas.

//INVERSÃO

if(strcmp(comando,"INV")==0){

float matrizresultante[linhas][colunas];

    for (i=0; i< linhas; i++){
        for (j=0; j< colunas; j++){

            matrizresultante[i][j] = 255- matriz[i][j];

            }
        }

                       // imprimindo resultado

      printf ("INV\n");
      printf ("%i %i\n", linhas,coluna);
     for(i=0;i<linhas;i++){
        for(j=0;j<colunas;j++){
              printf(" Matriz [%i][%i]=[%f]\n ",i,j,matrizresultante[i][j]);

        }

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia travar no strcmp(comando,"lim") se o vetor de chars comando não tiver o caractere '\0' indicando o fim da string.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em C quando uma string é armazenada num vetor de chars, os caracteres são guardados em cada posição do vetor começando na posição 0 do vetor, a posição do vetor após o último caractere da string recebe o caractere nulo '\0' para indicar que a string acabou (logo para poder armazenar uma string um vetor de chars deve ter pelo menos 1 posição a mais que o número de caracteres da string, para poder guardar todos os caracteres mais o caractere nulo).

 

Ex: Quando se guarda a string "ovo" num vetor de chars os caracteres armazenados no vetor serão  'o', 'v', 'o' e '\0', logo o vetor de chars deve ter no mínimo 4 posições (char vetor[4]) para armazenar essa string.

 

Se o vetor não tiver o caractere nulo a função strcmp() não vai saber onde parar e vai continuar lendo caracteres mesmo depois do fim dos caracteres da string, o que resultaria que ele tentará acessar posições do vetor que não existem quando tentar acessar posições além do comprimento do vetor, dando erro e travando o programa. (O mesmo pode ocorrer se o vetor não for grande o suficiente para armazenar todas as letras + o caractere nulo.)

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×