Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | jacob navia <jacob@spamsink.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | hexump.c |
| Date | 2011-09-09 22:53 +0200 |
| Organization | lccwin |
| Message-ID | <j4ducg$lmn$1@speranza.aioe.org> (permalink) |
Got the idea of adding one more exercise to the tutorial.
The goal is to show a small hexdump utility without any bells and
whistles, and add a bunch of exercises to add those. Here it is.
It uses standard C. Please tell me if there could be any
portability problems.
I do not use putchar but fputc to make it easier to add an output
file later as one more argument.
Please tell me if you see any errors in it. Note that the manifest
constants will be replaced by #defines in the exercises, when they
are asked to increase the number of columns, etc.
------------------------------------------------------cut here
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[])
{
if (argc < 2) {
fprintf(stderr,"Usage: %s <file name>\n",argv[0]);
return EXIT_FAILURE;
}
FILE *file = fopen(argv[1],"rb");
if (file == NULL) {
fprintf(stderr,"Impossible to open %s for reading\n",argv[1]);
return EXIT_FAILURE;
}
int oneChar = fgetc(file);
int column = 0,line = 0;
unsigned char tab[16+1];
char *hex = "0123456789abcdef";
int address = 1;
while (oneChar != EOF) {
if (column == 0) {
memset(tab,'.',16);
fprintf(stdout,"[%d] ",address);
}
if (oneChar >= ' ' && oneChar <= 127) {
tab[column] = oneChar;
}
fputc(hex[(oneChar >> 4)&0xf],stdout);
fputc(hex[oneChar&0xf],stdout);
fputc(' ',stdout);
column++;
if (column == 16) {
fputc(' ',stdout);
tab[column]=0;
fputs(tab,stdout);
column = 0;
}
line++;
if (line == 16) {
fputc('\n',stdout);
line = 0;
}
oneChar = fgetc(file);
address++;
}
fclose(file);
address--;
if (column > 0 ) {
while (column < 16) {
fprintf(stdout," ");
tab[column]=' ';
column++;
}
tab[16]=0;
fprintf(stdout," %s\n[%d]\n",tab,address);
}
else fprintf(stdout,"[%d]\n",address);
return EXIT_SUCCESS;
}
----------------------------------------------------cut here
Back to comp.lang.c | Previous | Next — Next in thread | Find similar | Unroll thread
hexump.c jacob navia <jacob@spamsink.net> - 2011-09-09 22:53 +0200
Re: hexump.c tea strainer <nospam@nospam.com> - 2011-09-09 21:06 +0000
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-09 23:57 +0200
Re: hexump.c NicStevens <nic.stevens@gmail.com> - 2011-09-12 13:22 -0700
Re: hexump.c Ian Collins <ian-news@hotmail.com> - 2011-09-10 09:18 +1200
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-09 23:59 +0200
Re: hexump.c Ike Naar <ike@iceland.freeshell.org> - 2011-09-09 22:29 +0000
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 00:39 +0200
Re: hexump.c Ike Naar <ike@iceland.freeshell.org> - 2011-09-09 22:53 +0000
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 00:58 +0200
Re: hexump.c Seebs <usenet-nospam@seebs.net> - 2011-09-13 06:44 +0000
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-13 10:33 +0200
Re: hexump.c Fritz Wuehler <fritz@spamexpire-201109.rodent.frell.theremailer.net> - 2011-09-13 18:02 +0200
Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-13 16:36 -0400
Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-13 22:44 +0200
Re: Teaching C (was Re: hexump.c) Nobody <nobody@nowhere.com> - 2011-09-14 13:31 +0100
Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 15:27 +0200
Re: Teaching C (was Re: hexump.c) Richard Damon <news.x.richarddamon@xoxy.net> - 2011-09-14 11:49 -0400
Re: Teaching C (was Re: hexump.c) Keith Thompson <kst-u@mib.org> - 2011-09-14 13:27 -0700
Re: Teaching C (was Re: hexump.c) pacman@kosh.dhis.org (Alan Curry) - 2011-09-14 20:59 +0000
Re: Teaching C (was Re: hexump.c) Nobody <nobody@nowhere.com> - 2011-09-14 22:20 +0100
Re: Teaching C (was Re: hexump.c) James Kuyper <jameskuyper@verizon.net> - 2011-09-14 17:20 -0400
Re: Teaching C (was Re: hexump.c) pacman@kosh.dhis.org (Alan Curry) - 2011-09-15 01:51 +0000
Re: Teaching C (was Re: hexump.c) Keith Thompson <kst-u@mib.org> - 2011-09-14 19:29 -0700
Re: Teaching C (was Re: hexump.c) Keith Thompson <kst-u@mib.org> - 2011-09-14 19:21 -0700
Re: Teaching C Ben Pfaff <blp@cs.stanford.edu> - 2011-09-14 19:58 -0700
Re: Teaching C Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-09-14 21:55 -0600
Re: Teaching C James Kuyper <jameskuyper@verizon.net> - 2011-09-15 06:54 -0400
Re: Teaching C Keith Thompson <kst-u@mib.org> - 2011-09-15 11:58 -0700
Re: Teaching C Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-24 12:57 -0800
Re: Teaching C Nobody <nobody@nowhere.com> - 2011-09-15 14:25 +0100
Re: Teaching C Seebs <usenet-nospam@seebs.net> - 2011-09-16 22:00 +0000
Re: Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-14 12:54 -0400
Re: Teaching C (was Re: hexump.c) James Kuyper <jameskuyper@verizon.net> - 2011-09-14 13:26 -0400
Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 19:33 +0200
Re: Teaching C (was Re: hexump.c) jameskuyper <jameskuyper@verizon.net> - 2011-09-14 11:33 -0700
Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 21:17 +0200
Re: Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-16 11:47 -0400
Re: Teaching C (was Re: hexump.c) Seebs <usenet-nospam@seebs.net> - 2011-09-14 20:43 +0000
Re: Teaching C (was Re: hexump.c) Nobody <nobody@nowhere.com> - 2011-09-14 22:35 +0100
Re: Teaching C (was Re: hexump.c) gordonb.8a7i1@burditt.org (Gordon Burditt) - 2011-09-14 17:31 -0500
Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 19:32 +0200
Re: Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-16 11:27 -0400
Re: Teaching C (was Re: hexump.c) Malcolm McLean <malcolm.mclean5@btinternet.com> - 2011-09-16 08:49 -0700
Re: Teaching C (was Re: hexump.c) James Kuyper <jameskuyper@verizon.net> - 2011-09-17 15:04 -0400
Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-13 20:31 -0700
Re: hexump.c Malcolm McLean <malcolm.mclean5@btinternet.com> - 2011-09-14 03:22 -0700
Re: hexump.c "BartC" <bc@freeuk.com> - 2011-09-14 11:40 +0100
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-14 13:54 +0200
Re: hexump.c Nobody <nobody@nowhere.com> - 2011-09-14 13:50 +0100
Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-14 11:35 -0700
Re: hexump.c Seebs <usenet-nospam@seebs.net> - 2011-09-14 19:12 +0000
Re: hexump.c John Bode <jfbode1029@gmail.com> - 2011-09-14 15:31 -0700
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-15 00:59 +0200
Re: hexump.c Kleuskes & Moos <kleuske@somewhere.else.net> - 2011-09-14 23:14 +0000
Re: hexump.c John Bode <jfbode1029@gmail.com> - 2011-09-15 08:52 -0700
Re: hexump.c Jens Gustedt <jens.gustedt@loria.fr> - 2011-09-14 21:22 +0200
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-14 21:26 +0200
Re: hexump.c Ian Collins <ian-news@hotmail.com> - 2011-09-15 07:32 +1200
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-14 21:44 +0200
Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-14 13:49 -0700
Re: hexump.c Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-09-16 00:50 +0300
Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-15 18:34 -0700
Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-14 12:16 -0700
Hypocrites jacob navia <jacob@spamsink.net> - 2011-09-14 21:40 +0200
Re: Hypocrites Keith Thompson <kst-u@mib.org> - 2011-09-14 19:11 -0700
Re: hexump.c Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-09-14 15:05 +0100
Re: hexump.c Malcolm McLean <malcolm.mclean5@btinternet.com> - 2011-09-14 07:56 -0700
Re: hexump.c "BartC" <bc@freeuk.com> - 2011-09-14 17:23 +0100
Re: hexump.c Seebs <usenet-nospam@seebs.net> - 2011-09-14 19:12 +0000
Re: hexump.c John Bode <jfbode1029@gmail.com> - 2011-09-14 15:24 -0700
Re: hexump.c gordonb.ik17p@burditt.org (Gordon Burditt) - 2011-09-09 18:16 -0500
Re: hexump.c Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-09-12 22:24 +0000
Re: hexump.c "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-09-09 20:33 -0400
Re: hexump.c Ian Collins <ian-news@hotmail.com> - 2011-09-10 12:42 +1200
Re: hexump.c "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-09-10 17:16 -0400
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 10:03 +0200
Re: hexump.c Nobody <nobody@nowhere.com> - 2011-09-10 10:04 +0100
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 11:41 +0200
Re: hexump.c pete <pfiland@mindspring.com> - 2011-09-10 05:51 -0400
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 12:38 +0200
Re: hexump.c Nobody <nobody@nowhere.com> - 2011-09-10 17:53 +0100
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 12:46 +0200
Re: hexump.c Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-09-10 13:03 +0100
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 15:34 +0200
Re: hexump.c "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-09-10 17:37 -0400
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-11 00:10 +0200
Re: hexump.c Patrick Scheible <kkt@zipcon.net> - 2011-09-10 21:03 -0700
Re: hexump.c Barry Schwarz <schwarz45@yahoo.com> - 2011-09-11 00:37 -0700
Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-11 13:56 +0200
csiph-web