Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643

    [C] Inserimento stringhe, errore che non capisco

    Un errore che non capisco.
    E' la prima parte di un lungo programma, un inserimento di stringhe (max 20) che poi vengono stampate, se si inserisce una stringa vuota si esce dal ciclo e si termina.
    Non capisco perche' se prima di inserire la prima stringa non digito invio non me la visualizza, e comincia a visualizzare dalla seconda stringa in avanti.
    Se premo invio e poi digito la prima stringa viene visualizzata anche lei.
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    main()
    {
    char *linea_inserita[20];
    char buffer[80];
    printf("Inserire una serie di righe dalla tastiera, una riga vuota per terminare\n");
    
    int n = 0;
    
    gets(buffer);
    
    while((n<20) && (gets(buffer) != 0) && (buffer[0] != '\0'))
    {
    if((linea_inserita[n]= (char*)malloc(strlen(buffer)+1)) != NULL)
    {
    printf("LINEA INSERITA = %s\n", buffer);
    }
    n++;
    }
    getchar();
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Beh... la prima riga prima del while è un'istruzione di input da tastiera (c'è un'istruzione "gets(buffer)" prima del while)... il programma si ferma lì e attende un input... che poi getta via, perchè comincia a considerare solo gli input derivanti dalle gets() dentro nel while.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    Non l'ho fatto apposta, ma quel gets(buffer) prima del while era la versione originale, senza il controllo sull'eventuale fine file o il controllo sul primo carattere della linea inserita.
    Dopo l'inserimento del while lo dovevo ovviamente eliminare, dimenticanza (e' che credevo di averlo tolto).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.