/* * *** Listing 1-1 *** * * Programme pour calculer la somme (checksum)sur 16 bits de tous les octets du * fichier spécifié. Récupère les octets un par un via read(), * en laissant DOS réaliser le tamponnage . */ #include #include main(int argc, char *argv[]) { int Handle; unsigned char Byte; unsigned int Checksum; int ReadLength; if ( argc != 2 ) { printf("syntaxe: non_du_fichier\n"); exit(1); } if ( (Handle = open(argv[1], O_RDONLY | O_BINARY)) == -1 ) { printf("ne peut pas ouvrir le fichier: %s\n", argv[1]); exit(1); } /* Initialise l'accumulateur de checksum */ Checksum = 0; /* Addition de chaque octet dans l'accumulateur de checksum */ while ( (ReadLength = read(Handle, &Byte, sizeof(Byte))) > 0 ) { Checksum += (unsigned int) Byte; } if ( ReadLength == -1 ) { printf("Erreur de lecture du fichier %s\n", argv[1]); exit(1); } /* Rapporte le résultat */ printf("La somme est: %u\n", Checksum); exit(0); }