Gnocchino ha scritto:
...Dalle tue perplessita capisco che ne sai molto ma molto di piu di me,io purtroppo sono alle prime armi...
Bhè programmo in C dal 1991, e in C++ dal 1993 (ho perfino un autografo di Stroustrup)
Guardando l'ultimo programma faccio notare che...
1) cosa succede se testo punta a un'area di memoria NON null-terminata? (strlen)
2) gli interi possono essere signed (col segno)? cosa succede se max è negativo?
3) se longer punta a vuoto?
4) perchè la funzione è void, invece di tornare la lunghezza (collegato al punto precedente)
5) in generale l'inizializzazione a zero l'eviterei, è una pessima consuetudine, foriera di disastri immani
6) "trucchetto": talvolta conviene usare brutamente sprintf per avere la null-terminazione automatica (vabbè ma questo non ti riguarda a questo livello)
7) cambia qualcosa se il terminatore della stringa è 10-13 anzichè 10 (o 13) ? In pratica il programma è perfettamente portabile tra Windows e Linux (per banalizzare)
- questa però è molto oltre - siamo sicuri che char vada bene, o quanto sia un char (mi riferisco a utf8, quindi portabilità con lingue non latine, tipo russo per dirne una)
9) come distingui un parametro in ingresso, da uno in uscita? consiglio di usare una banale consuetudine: chiamare i_qualcosa quelli in ingresso, e o_qualcosa quelli in uscita. Esempio: max è un parametro in INGRESSO dalla funzione, o uno in uscita? Io non so dirlo (guardando la definizione della funzione). Potrebbe (anzi dovrebbe) essere secondo logica professionale la lunghezza massima di testo[]
Insomma come puoi vedere anche fare una funzioncella banale come quella in oggetto, a livello professionale e non accademico-didattico, non è banale come può sembrare all'apparenza.