From 9ffa7dde857c29c1f74e1738284e4b3abfa72f10 Mon Sep 17 00:00:00 2001 From: Mathieu Maret Date: Mon, 21 Mar 2022 21:54:58 +0100 Subject: [PATCH] Add strcmp and readline --- utils.c | 61 +++++++++++++++++++++++++++++++++++++++++---------------- utils.h | 2 ++ 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/utils.c b/utils.c index cd173fb..221a9ff 100644 --- a/utils.c +++ b/utils.c @@ -1,25 +1,25 @@ -#include -#include "uart.h" #include "clock.h" +#include "uart.h" +#include // K&R inspirated void printhex(unsigned int d) { char n; - for(int c=28;c>=0;c-=4) { + for (int c = 28; c >= 0; c -= 4) { // get highest tetrad - n=(d>>c)&0xF; + n = (d >> c) & 0xF; // 0-9 => '0'-'9', 10-15 => 'A'-'F' - n+=n>9?0x37:0x30; + n += n > 9 ? 0x37 : 0x30; putc(n); } } int strlen(char s[]) { - int i=0; - while(s[i]!= '\0') { + int i = 0; + while (s[i] != '\0') { ++i; } return i; @@ -28,20 +28,20 @@ int strlen(char s[]) void reverse(char s[]) { int c, i, j; - for(i=0, j=strlen(s)-1; i0); - s[i]='\0'; + s[i++] = n % 10 + '0'; + } while ((n /= 10) > 0); + s[i] = '\0'; reverse(s); } @@ -49,7 +49,7 @@ void printdec(unsigned int d) { char s[16]; itoa(d, s); - for(int i=0; i0 if s1>s2 +int strcmp(const char s1[], const char s2[]) +{ + int i; + for (i = 0; s1[i] == s2[i]; i++) { + if (s1[i] == '\0') + return 0; + } + return s1[i] - s2[i]; +} diff --git a/utils.h b/utils.h index 4dfed5d..c3abbaa 100644 --- a/utils.h +++ b/utils.h @@ -6,3 +6,5 @@ void reverse(char s[]); void itoa(unsigned int n, char s[]); void printdec(unsigned int d); void printclock(); +int strcmp(const char s1[], const char s2[]); +int readline(char *buf, int maxlen);