From 0bca634f7e70b05239f46f3bd40bb37468d67957 Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Sun, 24 Oct 2021 18:47:28 +0200 Subject: Fixing keyboard, changes to Makefile and string.h, trying to add heap... --- src/string.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 69 insertions(+), 14 deletions(-) (limited to 'src/string.c') diff --git a/src/string.c b/src/string.c index f48614f..b0c42f2 100644 --- a/src/string.c +++ b/src/string.c @@ -1,12 +1,10 @@ -#include -#include -#include +#include"types.h" size_t stringlen(char *str) { size_t i; + for(i=0;str[i]!='\0';i++) ; - i--; return i; } @@ -24,11 +22,17 @@ void stringcat(char *str1,char *str2) char *tmp=str1; while(*tmp) tmp++; while(*str2) *tmp++=*str2++; + *tmp=*str2; +} + +void stringcpy(char *str1,char *str2) +{ + for(size_t i=0;str2[i]!='\0';i++) str1[i]=str2[i]; } void stringrev(char *str) { - size_t i=stringlen(str); + size_t i=stringlen(str)-1; for(size_t j=0;j0;num/=10,i++) str[i]='0'+num%10; - str[i]='\0'; - stringrev(str); -} - -uint32_t stoi(char *str) +uint32_t stoi(const char *str) { uint32_t num=0; + for(size_t i=0;str[i]!='\0';i++) { + if(str[i]<'0'||str[i]>'9') return num; num*=10; num+=str[i]-'0'; } + return num; } + +void itos(uint32_t num,char *str) +{ + if(num==0) stringcpy(str,"0"); + else + { + size_t i=0; + for(;num>0;num/=10,i++) str[i]='0'+num%10; + str[i]='\0'; + + stringrev(str); + } +} + +double stof(const char *str) +{ + double num=0; + + bool point=0; + uint32_t pow=1; + size_t i=0; + + for(;str[i]!='\0';i++) + { + if(str[i]=='.') + { + if(point) return num/pow; + point=1; + continue; + } + if(str[i]<'0'||str[i]>'9') return num/pow; + num*=10; + num+=str[i]-'0'; + if(point) pow*=10; + } + + return num/pow; +} + +const int decimals=7; +void ftos(double num, char *str) +{ + itos((uint32_t)num,str); + + stringcat(str,"."); + char c[2]; + c[1]='\0'; + + for(size_t i=0;i