Ok, ora ho capito cosa intendi per "salvarlo in due variabili", per fare cio' non si deve chiamare 2 volte la scanf() ma una volta sola.
Inoltre dire che il programma si inchioda e basta non e' di nessun aiuto a chi potrebbe / vorrebbe aiutarti, devi postare il sorgente per intero, indicando il punto in cui riscontri problemi (di compilazione o logici che siano).
Comunque per fare questo "doppio salvataggio" fai cosi':
#include <stdio.h>
#include <stdlib.h>
#define MAX_BUFF (255)
int main(void) {
int dato;
char barcode[MAX_BUFF];
printf("# Dato: ");
fgets(barcode,sizeof(barcode) - 1,stdin);
dato = atoi(barcode);
printf("dato => %d\n",dato);
printf("barcode => %s\n",barcode);
return 0;
}
Potresti evitare di includerti tutta la stdlib per usare solamente l'atoi comunque non credo ti importi piu' di tanto.
Saluti, netburst.