Salve a tutti.
Sono nuovo della programmazione C/C++, sto provando a fare un semplice programma in C++ che prende in input dall'utente delle stringhe e inserisce un puntatore a queste stringe in un array in modo da formare un array di puntatori.
Un'altra funzione scorre l'array e stampa le stringhe.
Ecco il codice:
#include <iostream>
#include <istream>
int MAXLEN = 1000;
int MAXLINES = 5000;
using namespace std;
void readline(int numline, char *lineptr[]);
void writeline(int numline, char *lineptr[]);
int main (int argc, char * const argv[]) {
int numline;
char *lineptr[MAXLINES];
cout << "Quante righe vuoi inserire: ";
cin >> numline;
readline(numline,lineptr);
writeline(numline,lineptr);
}
void readline(int numline, char *lineptr[]) {
char *p, line[MAXLEN];
int n=0, i=0;
while(n != numline+1) {
cin.getline(line, MAXLEN);
line[strlen(line)] = '\0';
strcpy(p, line);
lineptr[i] = p;
i++;
n++;
}
}
void writeline(int numline, char *lineptr[]) {
for(int i = 0; i<numline;i++){
cout << lineptr[i] << "\n";
}
}
Il problema è la stampa delle stringhe, vengono stampati dei numeri separati da slash e non le stringhe.
L'array di puntatori mi sembra correttamente riempito perchè se faccio un
cout << lineptr
nella funzione readlines() viene stampata la stringa appena inserita.
Come mai?
Grazie!