Stringhe e carattere '\n'

di il
3 risposte

Stringhe e carattere '\n'

Avevo capito che il terminatore '\n' in una stringa ne determinasse la fine.
tab=new char*[rig];
for (int i=0; i<rig; i++)
   tab[i]=new char[col+1];
for (int r=0; r<rig; r++)
	for (int c=0; c<col+1; c++)
		tab[r][c]='\n';
Se provo a stampare la lunghezza di una riga con strlen(tab[r]) ottengo un valore diverso da zero.
Non capisco perchè.
mat[r] dovrebbe rappresentare l'indirizzo del primo carattere della riga 'r' della matrice quindi se la funzione vede come primo carattere il sterminatore non dovrebbe restituire subito zero?!?!
Dove sbaglio?

3 Risposte

  • Re: Stringhe e carattere '\n'

    \n è il carattere di new line, il terminatore di stringa è \0.

    Il ciclo for con la variabile r può essere evitato.
    Un consiglio, utilizza sempre le parentesi graffe per evitare errori e rendere il codice più chiaro.
  • Re: Stringhe e carattere '\n'

    Azzzzzz è vero!!!!!!!!! che sbadato!
    non ho capito come evitare il ciclo for con la variabile r , se mi concentro solo sulle colonne come azzero il resto delle righe? Ovviamente non si conosce il numero iniziale di righe e colonne, hai solo due variabili r e c.

    come avrei dovuto inizializzare il singolo elemento? Così?

    mat[r][c] = { '\0' };
  • Re: Stringhe e carattere '\n'

    Intendevo semplicemente questo:
    char **tab = new char*[rig];
    for(unsigned int i = 0; i < rig; ++i)
    {
        tab[i] = new char[col];
        for(int j = 0; j < col; ++j)
        {
            tab[i][j] = '\0';
        }
    }
Devi accedere o registrarti per scrivere nel forum
3 risposte