Nie kumam fragmentu pliku z wykładu(chodzi mi o tą część zaznaczoną na czerwono):
#include
#include
int
main( int argc, char **argv )
{
FILE * in = argc > 1 ? fopen( argv[1], "r" ) : stdin;
char buf[1024];
while( fgets( buf, 1024, in) != NULL ) {
if( strstr( buf, "Passed CLEAN" ) != NULL ) {
char m[4];
int d;
int ho,mi,se;
char mail[256];
char *tmp;
if( sscanf( buf, "%s %d %d:%d:%d", m, &d, &ho, &mi, &se ) == 5 ) {
printf( "godz: %d:%d:%d dzien %d %s ", ho, mi, se, d, m );
if( (tmp= strchr( buf, ' if( sscanf( tmp+1, "%s", mail ) == 1 ) {
mail[strlen(mail)-1]= '\0';
printf( "from %s", mail );
}
}
printf( "\n" );
}
}
}
return 0;
}
[C] fragment wykładu
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
[C] fragment wykładu
Funkcja sscanf odczytuje wartości z I parametru, przy pomocy II parametru jako formatu, wartości do kolejnych zmiennych, zwracając liczbę poprawnie zaczytanych danych w przypadku sukcesu.eaglefly pisze: if( sscanf( tmp+1, "%s", mail ) == 1 ) {
mail[strlen(mail)-1]= '\0';
printf( "from %s", mail );
}
Czyli jeżeli liczba poprawnie odczytanych zmiennych jest równa 1eaglefly pisze: if( sscanf( tmp+1, "%s", mail ) == 1 )
f( (tmp= strchr( buf, '
Adres tmp+1 oznacza adres kolejnego znaku po "
mail[strlen(mail)-1]= 0; -"
dokładnie podstawiamy pod adres ostatniego znaku, znak końca łańcucha o kodzie 0.
printf( "from %s", mail ); <- zostało wypisać od kogo jest poczta czyli wyświetlić zawartość zmiennej mejl.