+ Responder ao Tópico



  1. #1
    harlen
    Visitante

    Padrão scanf ou gets?

    Como sou novato, fico até com vergonha da pergunta... mas nao consegui resolver o meu problema....
    Bom vamos lá: Em turbo c 3.0 utilizo uma funcao mais ou menos assim:
    cadastro(){
    strutct cadastro
    {
    char nome[10]
    ...
    ...
    }clientes[5]
    for (i = 0; I < 5; i++)
    {
    printf("Nome: ");
    gets(clientes[i].nome);
    ...
    }
    ...}

    Ja em linux, utilizando o mesmo esquema, com gets não funciona, e aparece o seguinte erro quando da compilacao:
    /tmp/ccam6zQk.o(.text+0xef): In function `cadastro':
    : warning: the `gets' function is dangerous and should not be used.

    E utilizando o scanf("%s", ...), quando inserido um espaço em branco, ocorre um salto de linha (para o proximo campo).

    Como corrigir isto, pois ja li quase todo a man do get, scanf... e nao encontrei uma solução.

  2. #2

    Padrão Re: scanf ou gets?

    Citação Postado originalmente por harlen
    : warning: the `gets' function is dangerous and should not be used.
    E utilizando o scanf("%s", ...), quando inserido um espaço em branco, ocorre um salto de linha (para o proximo campo).
    baum...o gcc da esse aviso pq realmente a funcao gets eh perigosa...pq vc pode ler mais coisa do que pode armazenar..por isso q o recomendavel era voce usar o scanf....eu ainda nao intendi mto bem qual eh o problema...mas tenta usar o fgets

    Código :
    fgets(buf,1024,stdin);

  3. #3
    veiga
    Visitante

    Padrão scanf ou gets?

    da uma olhada, isso ja foi discutido em outro tópico:
    https://under-linux.org/modules.php?...wtopic&t=23147

  4. #4

    Padrão scanf ou gets?

    a gets() é perigosa, porém a scanf() tb eh cheia de furos...

    usa assim:

    scanf("%[^\n]s",dados[i]);

    certo?

  5. #5
    c0deks
    Visitante

    Padrão scanf ou gets?

    pow vlw galera, eu ia fazer um post sobre isso agora....hehehehe.....jah resolvi.....