summaryrefslogtreecommitdiff
path: root/asc.c
diff options
context:
space:
mode:
Diffstat (limited to 'asc.c')
-rw-r--r--asc.c110
1 files changed, 58 insertions, 52 deletions
diff --git a/asc.c b/asc.c
index 46f37b2..5436cf3 100644
--- a/asc.c
+++ b/asc.c
@@ -1,73 +1,79 @@
+#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
-main(argc,argv)
-int argc;
-char *argv[];
-
+static char *binary(unsigned int i, unsigned int w)
{
- int f,l,r;
+ static char buff[1024];
+ char *p;
unsigned int c;
+ unsigned int b;
+
+ c = w;
+ b = 1<<(w-1);
- char *binary();
+ p = buff;
- if(argc==1)
+ for(c = w; c--; b = b>>1)
+ {
+ if(i&b)
+ {
+ *p++='1';
+ }
+ else
{
+ *p++='0';
+ }
+ }
+
+ *p='\0';
+
+ return buff;
+}
+
+int main(int argc, char *argv[])
+{
+ int f;
+ int l;
+ int r;
+ unsigned int c;
+
+ if(argc == 1 || (argc == 2 && strcmp(argv[1],"-c") == 0))
+ {
printf("%s: usage %s string1 [..stringn] | -c num1 [.. num n]\n",
argv[0],argv[0]);
- exit(-1);
- }
+ exit(EXIT_FAILURE);
+ }
- if(strcmp(argv[1],"-c"))
+ if(strcmp(argv[1],"-c") != 0)
+ {
+ for(r = 1 ;r < argc; r++)
{
- for(r=1;r<argc;r++)
+ l = strlen(argv[r]);
+
+ for(f = 0; f < l; f++)
{
- l=strlen(argv[r]);
+ c = (unsigned int)*(argv[r]+f);
- for(f=0;f<l;f++)
- {
- c=(unsigned int)*(argv[r]+f);
- printf("%c (%3d - 0x%2.2X %%%s)\n",
- ((*(argv[r]+f) > 31) ? (*(argv[r]+f)) : '?')
- ,c,c,binary(c,8));
- }
+ printf("%c (%3u - 0x%2.2X %%%s)\n",
+ (*(argv[r]+f) > 31) ? (*(argv[r]+f)) : '?',
+ (unsigned int)(unsigned char)c,
+ (unsigned int)(unsigned char)c,
+ binary(c,8));
}
}
+ }
else
- {
- if(argc==2)
- {
- printf("%s:usage %s -c num1 [.. num n]\n",argv[0],argv[0]);
- exit(-1);
- }
+ {
for(f=2;f<argc;f++)
- {
- c=(char)strtol(argv[f],NULL,0);
+ {
+ c = (unsigned int)strtol(argv[f], NULL, 0);
- printf("%c (%3d - 0x%2.2X %%%s)\n",
- (c>31) ? (char)c : '?',
- c,c,binary(c,8));
- }
+ printf("%c (%3u - 0x%2.2X %%%s)\n",
+ c>31 ? (char)c : '?',
+ c, c, binary(c,8));
}
-
-}
-
-
-char *binary(i,w)
-unsigned int i,w;
-
-{
- static char buff[1024],*p;
- unsigned int c=w,b=1<<(w-1);
-
- p=buff;
-
- for(;c--;b=b>>1)
- if(i&b)
- *p++='1';
- else
- *p++='0';
-
- *p='\0';
+ }
- return(buff);
+ return EXIT_SUCCESS;
}