Precedente :: Successivo |
Autore |
Messaggio |
Claudia Comune mortale
Registrato: 15/02/14 10:52 Messaggi: 2
|
Inviato: 15 Feb 2014 11:00 Oggetto: Aiuto in c++ |
|
|
Per favore potete darmi una mano con questo programma in c++??
Il programma chiede di inserire un certo numero di stringhe, più il carattere separatore e allocare dinamicamente memoria per una nuova stringa contenente la concatenazione delle stringhe immesse separate dal carattere separatore immesso.
Finora sono arrivata a questo punto. Ma per come ho impostato il mio programma, la stringa risultante risulta sempre essere pari alla prima inserita, e non riesco a capire cosa abbia sbagliato.
#include <iostream>
#include <string.h>
using namespace std;
int main ()
{
int n;
char sep [1];
cout << "Inserisci il numero di stringhe" << endl;
cin >> n;
//Allocato memoria dinamicamente per ogni stringa
char *p [n];
for (int i=0; i< n; i++)
{
p[i]= new char [100];
}
for (int i=0; i<n; i++)
{
cout << "Inserisci la stringa " << i+1 << endl;
cin >> p[i];
}
cout << endl << "Inserisci il carattere separatore" << endl;
cin >> sep;
//ricavo la lunghezza di ogni stringa
//tutti i separatori delle stringhe sono n-1
int len= n-1;
for (int i=0; i<n; i++)
{
len += strlen (p[i]);
}
//alloco spazio per la mia stringa risultante
char* stringa = new char [len +1];
//inizializzo la mia stringa risultante con la prima stringa inserita
strcpy (stringa, p[0]);
for (int i=1; i<n; i++)
{
strcat (stringa, sep);
strcat (stringa, p[i]);
}
cout << stringa; |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11566 Residenza: Tokelau
|
Inviato: 15 Feb 2014 18:31 Oggetto: |
|
|
onestamente l'unica cosa che vedo di sbagliata è la definizione di sep:
questo crea un array di un solo elemento di tipo carattere, ma le strighe in C/C++ occupano un carattere in più, quindi un array di questo tipo può solo contenere stringhe di lunghezza 0 e tu ci metti dentro una stringa di lunghezza 1...
Non so dirti se questo risolve il malfunzionamento, ma in ogni caso di certo devi cambiare quella riga in
|
|
Top |
|
|
Claudia Comune mortale
Registrato: 15/02/14 10:52 Messaggi: 2
|
Inviato: 16 Feb 2014 16:47 Oggetto: |
|
|
Ti ringrazio per l'aiuto Modificando la dimensione dell'array si è risolto il problema, e adesso il programma funziona |
|
Top |
|
|
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|