Zdravim. Měl bych takovou menší prosbu. Našla by se tu nějaká dobrá duše, která by mě mohla okomentovat nasledující kod? Nebo alespoň vysvětlit, proč se v něm vyskytují dva naprosto stejné cykly? Vím, že tento kod má převádět zadaný údaj na číslo a přitom nemá brát v úvahu ani písmena a ani znaky, ale prostě nechápu, proč tam jsou ty cykly dva. Předem děkuji za odpověď.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ( void )
{
int i = 0;
char s[BUFSIZ];
int ch;
while ( ( ch = getc ( stdin ) ) != EOF ) {
if ( isdigit ( ch ) )
break;
}
if ( !feof ( stdin ) ) {
s[i++] = ch;
while ( ( ch = getc ( stdin ) ) != EOF ) {
if ( !isdigit ( ch ) )
break;
s[i++] = ch;
}
ungetc ( ch, stdin );
s[i] = '\0';
printf ( "The number is %d\n", atoi ( s ) );
if ( fgets ( s, sizeof s, stdin ) != NULL ) {
s[strcspn ( s, "\n" )] = '\0';
printf ( "The rest of the stream contains \"%s\"\n", s );
}
}
return 0;
}