Ciao a tutti ragazzi, intanto complimenti per il forum!!!
Ho un dubbio colossale, spero che qualcuno riesca ad aiutarmi.
Sto studiando C; sono arrivato a un punto in cui mi trovo ad analizzare un programma che trovo nel libro ma non riesco a capire una cosa; ecco il sorgente intanto:
codice:
#include <stdio.h>
#define MAXLINE 1000
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;
}
void copy (char to[], char from [])
{
int i;
i=0;
while ((to [i] = from[i]) != '\0')
++i;
}
main ()
{
int len;
int max;
char line [MAXLINE];
char longest [MAXLINE];
max=0;
while ((len = getline(line, MAXLINE)) >0)
if (len > max)
{
max=len;
copy(longest, line);
}
if (max >0)
printf ("%s", longest);
return 0;
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, successivamente a venir stampato sarà longest, che sarà il vettore intero. Di conseguenza il return i ha restituito l'intero vettore.
A quanto poi ho capio io c'è una grandissima differenza tra line (che come appunto detto è il vettore restitutio da return i) e len cui si attribusice il valore della funzione getline. La mia domanda è quest valore assegnato a getline ((len=getline(line,MAXLINE)) è diverso dal valore restituito da return i?
Io credo poprio di si, e penso questo perchè succesivamente viene fatto un paragone con max che è 0. Ma come puo' venir fatto un paragone se len fosse vettore?? Cio' mi porta quindi a dire che il valore restiutito da line (ovvero quello di return i) è diversissimo dal valore risultante dalla funzione getline.
GRAzie in anticipo a hiunque mi voglia aiutare.