Vai al contenuto


djzero00

Community Member
  • Numero contenuti

    12
  • Iscritto

  • Ultima visita

Su djzero00

  • Compleanno 08/12/1964

Apple Life

  • Prodotti Apple posseduti:
    iMac piuttosto vecchiotto, iPad
  • Utente Apple dal:
    1987

Come contattarmi

Info principali

  • Luogo:
    treviso
  • Sesso:
    Uomo

Su di me

  • Situazione sentimentale:
    Sposato/a

Visite recenti

Il blocco dei visitatori recenti è disabilitato e non viene mostrato ad altri utenti.

  1. djzero00

    linguaggio c

    #include <stdio.h> #define MAXLINE 1000 prendi( s, lim ) char s[ ];int lim; { int c, i; for ( i = 1; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i ) s[ i ] = c; if ( c == '\n' ) { s[ i ] = c; ++i; } s[ i ] = '\0'; return (i); } copy( s1, s2 ) char s1[ ], s2[ ]; { int i; i = 0; while ( (s2[ i ] = s1[ i ] != '\0') ) ++i; } int main( ) { int len; int max; char line[ MAXLINE ]; char save[ MAXLINE ]; max = 0; while ( (len == prendi( line, MAXLINE )) > 0 ) if ( len > max ) { max = len; copy( line, save ); } if ( max > 0 ) printf( "%s", save ); } Premetto che non ho XCode sotto mano, e che le mie considerazioni derivano da una sola lettura del codice. La sintassi di chiamata della funzioni e' obsoleta (usa almeno la versione 2 del libro K&R), ma non e' quello il problema. La funzione prendi(), nel ciclo for, e' mal scritta. Il flusso delle operazioni sarebbe il seguente: i = 1 ; s[1] = c ; test per i < lim-1 eccetera i = 2 ; Qui ci sono diversi "errori": la variabile c, alla prima assegnazione, non ha ancora dei valori validi (e' stata dichiarata ma mai inizializzata); il vettore di caratteri s[] ha nel primo elemento un valore non inizializzato (s[0] non lo assegna nessuna istruzione). Questo puo' (ma anche no) rendere conto di differenze di esecuzione su diversi sistemi e compilatori. Prova a riarrangiare il ciclo for, facendolo partire da zero, ed inizializzando la variabile c in maniera opportuna. Poi se ne riparla.
×