1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Fiz um programa "da treta" em C mas bloqueia. need help

Discussão em 'Programação' iniciada por vodkaPT, 13 de Setembro de 2006. (Respostas: 4; Visualizações: 652)

  1. vodkaPT

    vodkaPT Power Member

    Código:
    
    #include <stdio.h>
    
    char * strchr1(char *str , char ch)        /* Versão 1 */
    {
        int i;
        for (i=0; str[i]!='\0'; i++)
            if (str[i]==ch)
              return &str[i];
    
        return NULL;
    }
    
       
    int mostrar( char *v ) {
        int i=0;
        while(v[i] = '\0') {
        putchar(v[i]);
        i++;
    }
    }
    
    
    int main() {
        char str[50];
        char ch;
        char * ptr;
        ptr = NULL;
        printf("Qual o caracter a detectar?");
        scanf("%c", &ch);
        ptr = strchr1(str,ch);
        mostrar(ptr);
    }
    
    
    Não dá erros a compilar mas bloqueia >(

    Se alguem me poder ajudar :)

    A ideia era fazer um programa que fizesse o mesmo que o 0806.c do livro do damas ( pag. 296).

    Já dei voltas e voltas e não vejo porque que bloqueia.
     
  2. Cool_Fury

    Cool_Fury Power Member

    Falta-te um "=" no while se n me engano...no entanto podes fazer um debug simples a isso...pondo cada uma das funções em comentário e ir "descomentando" até ver onde rebenta...o código é suficientemente pequeno pa fazer este tipo de coisas.

    Cumps
     
  3. Jorge Candeias

    Jorge Candeias Power Member

    while(v = '\0')
    penso que o que querias por era while(v != '\0')

    enquanto o caracter da string não for igual a null, incrementa-se o índice da string


    Cumprimentos
     
  4. vodkaPT

    vodkaPT Power Member

    Obrigado pelas dicas.

    Não conhecia estas virtudes do debug, permitiu ver que o erro era um "segmentation fault" já corrigido, tambem faltava o scan da string.


    Até à proxima :)
     
  5. _jr

    _jr Power Member

    codigo + facil de ler

    char * strchr1( char *str , const char ch ){
    while( *str ){
    if ( ch == *str ) return str;
    ++str;
    }
    return NULL;
    }

    void mostrar( char *v ) {
    while( *v )
    putchar(v++);
    }
     
    Última edição: 13 de Setembro de 2006

Partilhar esta Página