Non capisco tutto quello che segue a questa affermazione, comunque getline restituisce il numero di caratteri acquisiti, infatti il tipo restituito è un intero. Ti commento il codice:Originariamente inviato da playbasfa
A quanto ho capito io il return i della funzione getline restituisce un valore che viene attribuito a line; queso valore successivamente tramite la funzione copy verrà attributo a longest,
.codice:#include <stdio.h> #define MAXLINE 1000 /* getline: Acquisisce una stringa da tastiera Parametri: s: puntatore al buffer in cui memorizzare i caratteri uu: numero massimo di caratteri da acquisire Valore restituito: numero di caratteri acquisiti */ int getline(char s[], int uu) { int c,i; for (i=0; i<uu-1 && (c=getchar()) != EOF && c!= '\n'; ++i) s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i]='\0'; return i; } /* copy: copia il contenuto di una stringa in un'altra stringa Parametri: to: stringa di destinazione from: stringa di origine Valore restituito: nessuno */ void copy (char to[], char from []) { int i; i=0; while ((to[i] = from[i]) != '\0') ++i; } /* main: entrypoint dell'applicazione Acquisisce una serie di stringhe da tastiera fino a quando l'utente non inserisce una stringa vuota e mostra la stringa più lunga inserita */ main () { int len; /* lunghezza della stringa appena acquisita da tastiera */ int max; /* lunghezza della stringa più lunga finora inserita (quindi lunghezza di longest) char line [MAXLINE]; /* stringa appena acquisita da tastiera */ char longest [MAXLINE]; /* stringa più lunga finora inserita */ max=0; /* inizializza max */ /* Ciclo ripetuto finché l'utente non preme Invio senza inserire caratteri (nel qual caso la funzione getline restituisce 0 e il ciclo termina) In questa istruzione avvengono diverse cose: 1. viene acquisita una stringa da tastiera, memorizzandola nell'array di caratteri line; 2. il valore restituito da getline (ossia la lunghezza della stringa acquisita) viene memorizzato in len, che quindi ora conterrà la lunghezza di line; 3. il valore di len viene confrontato con 0: se è maggiore di 0 il ciclo che segue viene eseguito. */ while ((len = getline(line, MAXLINE)) >0) { /* se la lunghezza della stringa acquisita è maggiore di quella della stringa fino ad ora più lunga... */ if (len > max) { /* ... memorizza in max il valore di len, ossia la nuova lunghezza di longest, dal momento che ... */ max=len; /* ... in longest ora viene copiata la stringa appena acquisita. */ copy(longest, line); } } /* al termine del ciclo se sono state inserite parole visualizza la più lunga */ if (max >0) printf ("%s", longest); return 0; }

Rispondi quotando