Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    c++ lettura con puntatore a stringa

    ciao a tutti! Ho questo codice -molto banale e inutile forse- e vorrei sapere se la scrittura cin.getline (p[i].s , 99) e' equivalente a una delle seguenti scritture o a altre che conoscete nel linguaggio c++.
    Grazie.

    cin.getline (*p.s, 99);
    cin.getline (p->s, 99);

    In queste 2 scritture non sono sicura che il puntatore punti effettivamente alla posizione i-esima del vettore di stringhe, costruito con l'allocazione dinamica, dato che la i non compare da nessuna parte. sapete come devo inserirla utilizzando la scrittura coi puntatori , anziche' con i vettori - cin.getline (p[i].s , 99) - ???

    Grazie mille.

    PS: infine, e' sempre necessario quando faccio un'allocazione dinamica, deallocare la memoria alla fine con l'istruzione delete p; ??

    Ciao Flo.


    #include <iostream.h>
    #include <string.h>
    #include <stdlib.h>

    struct stringa
    {
    char s [100];
    };

    int main ()
    {

    int dim;
    int i;
    stringa* p;

    cout << "Quante stringhe vuoi inserire?";
    cin >> dim;
    if (dim <= 0)
    {
    cout << "Errore!"
    return 1;
    }

    p = new stringa [dim];
    if (p==NULL)
    {
    cout << "memoria esaurita";
    exit (1);
    }

    cout<< "inserisci" << dim<< "stringhe: "<< endl;

    for (i=0; i<dim; i++)
    {cin.getline (p[i].s ,99);}

    cout << "Hai appena scritto queste righe: "<<endl;

    for (i=0; i<dim; i++)
    {cout << p[i].s << endl;}

    delete p;

    return 0;

    }

  2. #2
    Scusa, ma perchè non usi la classe string che è standard invece di quella struttura?? Inoltre, per deallocare un array, devi usare delete[] p; non delete p, con quest'ultimo deallochi solo il primo elemento.

  3. #3
    e' per un esami.. e purtroppo non posso usarle le classi all'esame..
    perche'?! .. mistero!
    Grazie per il consiglio cmq.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Come indicato nel Regolamento interno, quando si posta del codice si devono utilizzare gli appositi tag CODE. Vedi punto 6 nel link segnalato.


    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

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    un puntatore è a tutti gli effetti un intero con all'interno un indirizzo.. per spostarlo avanti e indietro basta il ++ o il --

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 © 2025 vBulletin Solutions, Inc. All rights reserved.