#include /* for printf */ #include /* for atol */ #include /* for read */ #include /* for strtok */ #define BUFFSIZE 50 void safe_get_integers(char buff[], long *first, long *second){ char* token = NULL; int bytes; if((first == NULL) || (second == NULL)) return; bytes = read(STDIN_FILENO, buff, BUFFSIZE); if(bytes < 0){ *first = 0; *second = 0; } else { *first = atol((((token = strtok(buff," ")) == NULL) ? "0" : token)); *second = atol((((token = strtok(NULL," ")) == NULL) ? "0" : token)); } } int main(void){ char buff[BUFFSIZE]; long first, second; safe_get_integers(buff, &first, &second); printf("Got %ld and %ld\n", first, second); return 0; }