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

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.
 
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
 
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
 
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 :)
 
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:
Back
Topo