[Lugge] Re: 2° esercizio C

  • From: "Roberto A. F." <robang@xxxxxxxxx>
  • To: lugge@xxxxxxxxxxxxx
  • Date: Wed, 18 Jul 2001 20:06:52 +0200

Massimo Arnaudo wrote:

> * mercoledì 18 luglio 2001, alle 17:54, Matteo Ianeselli scrive:
> >
> > Massimo Arnaudo, pigiando tasti a caso sul citofono, ha scritto:
> >
>
> Bè, effettivamente...
>
> >
> > 1) stai usando un vettore `input[]' il cui contenuto non e`
> >    inizializzato in alcun modo. Probabilmente dovresti prima copiarci
> >    dentro la stringa.
>
> Ok.
>
> >
> > 2) se `n' e` la dimensione dell'array, al massimo puoi accedere
> >    all'elemento con indice n-1, altrimenti sfori.
>
> Se ti riferisci alla riga
>
>                 ...
>                 s[s1] = input[n1];
>                 --n;  <--- quì ho commesso un errore di battitura, avrei
>                 voluto
>                 --n1;
>                 ...
> altrimenti non ho compreso il perché.

gli indici in C variano da 0 a n-1

char vettore[30] va da

vettore[0]

a

vettore[29]

> > 3) cosa succede se la stringa e` vuota (lunghezza 0)?
>
> Avevo pensato che l' eccezione sarebbe stata controllata dalla verifica di new
> line, in questo caso il contatore (s1) si sarebbe incrementato di 1 e a questo
> punto la condizione s1 < n non sarebbe stata piú rispettata.

Le stringhe di solito finiscono con lo zero non con il new line (o meglio in tal
caso il newline appartiene alla stringa)


> > 4) hai dichiarato che la funzione ritorna un char, ma non ritorni
> >    nulla.
> >
>
> Allora non ho ben capito il paragrafo delle funzioni...
> Pensavo che essendo manipolata, la stringa risulterebbe nuova, frutto di una
> funzione.

char s[] equivale a dire char *s, gli passi quindi il puntatore indirizzo e la
funzione va a modificare direttamente quella porzione di memoria quindi non hai
bisogno di ritornare nulla (perchè il puntatore ce lo avevi già). Però se devi
ritornare un char (o meglio sarebbe un char *) allora

char pippo() {
    char a = 0 ;
    return a;
}

non puoi ritornare nullo

    return;

altrimenti scrivi

void pippo() {
    char a = 0 ;
    return;
}



--

  ,__    ,_     ,___    .-------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-.
  ||_)   ||\    ||_    /     Proud Member & Master of the LUGGE    |
  || \   ||¯\   ||¯      linuxgrp: http://lugge.ziobudda.net       |
  ¯¯  ¯° ¯¯  ¯° ¯¯  °    homepage: http://digilander.iol.it/robang |
  Roberto A. Foglietta   icq uin : 1087 18 257, E=s*aurimento²     |
\                        reg num : #219348 with the Linux Counter  |
 `---------------------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-'

Contro la censura on-line firma la petizione:
 http://www.punto-informatico.it/petizione.asp

Art. 21. Tutti hanno diritto di manifestare liberamente il proprio
pensiero con la parola,lo scritto e ogni altro mezzo di diffusione.
La stampa non può essere soggetta ad autorizzazioni o censure.

Art. 33. L'arte e la scienza sono libere e libero ne è l'insegnamento.

<========----------
 Prima di scrivere in m-list per favore leggi il regolamento
 http://lugge.ziobudda.net/benvenuto.html



Other related posts: