From 539eeb1d8f97a0b78dd96f9b6565898e801eb31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Fri, 17 Aug 2018 22:32:09 +0200 Subject: [PATCH] feat: ajout de fonctions dans la librairie string --- include/string.h | 8 +++- lib/string.c | 104 ++++++++++++++++++++++++++++++++++++++++------- system/system.c | 17 ++++---- 3 files changed, 106 insertions(+), 23 deletions(-) diff --git a/include/string.h b/include/string.h index c9dacf9..16ece1e 100755 --- a/include/string.h +++ b/include/string.h @@ -9,6 +9,12 @@ u8 *strcpy(const u8 *src, u8 *des); void strtolower(u8 *src); void strtoupper(u8 *src); void stronecase(u8 *src); -void strsetlen(u8 *src, u8 size); +void strsetlen(u8 *src, u32 size); void strinvert(u8 *src); void strreplace(u8 *src, u8 search, u8 replaced); +u8 *strfill(u8 *dst, u8 pattern, u32 size); +void strright(u8 *src, u8 *dest, u32 size); +void strleft(u8 *src, u8 *dest, u32 size); +void strdelete(u8 *src, u32 index, u32 size); +void strcompressdelimiter(u8 *src, u8 delim); +void strinsert(u8 *src, u8 *dest, u32 index); diff --git a/lib/string.c b/lib/string.c index 2f88752..64248f2 100755 --- a/lib/string.c +++ b/lib/string.c @@ -4,11 +4,11 @@ /* Compare 2 chaines de caractère et renvoie la premiere distance (diff) */ -s8 strcmp(const u8 * src, const u8 * des) +s8 strcmp(const u8 * src, const u8 * dest) { register s8 result; do { - if ((result = *src - *des++) != 0) + if ((result = *src - *dest++) != 0) break; } while (*src++ != 0); @@ -42,10 +42,10 @@ u32 strlen(const u8 * src) /******************************************************************************/ /* copie une chaine dans une autre */ -u8 *strcpy(const u8 * src, u8 * des) +u8 *strcpy(const u8 * src, u8 * dest) { - u8 *temp = des; - while ((*des++ = *src++) != 0) ; + u8 *temp = dest; + while ((*dest++ = *src++) != 0) ; return temp; } @@ -53,28 +53,28 @@ u8 *strcpy(const u8 * src, u8 * des) /* copie une portion limité d'une chaine asciiZ*/ -u8 *strncpy(const u8 * src, u8 * des, u32 count) +u8 *strncpy(const u8 * src, u8 * dest, u32 count) { - u8 *temp = des; + u8 *temp = dest; while (count) { if ((*temp = *src) != 0) src++; temp++; count--; } - return des; + return dest; } /******************************************************************************/ /* concatene 2 chaines de caractère */ -u8 *strcat(const u8 * src, u8 * des) +u8 *strcat(const u8 * src, u8 * dest) { - u8 *temp = des; - while (*des != 0) - des++; - while ((*des++ = *src++) != 0) ; + u8 *temp = dest; + while (*dest != 0) + dest++; + while ((*dest++ = *src++) != 0) ; return temp; } @@ -138,7 +138,7 @@ void stronecase(u8 * src) /* Fixe la taille de la chaine */ -void strsetlen(u8 * src, u8 size) +void strsetlen(u8 * src, u32 size) { *(src+size)='\000'; } @@ -174,4 +174,80 @@ void strreplace(u8 *src, u8 search, u8 replaced) } } +/******************************************************************************/ +/* Rempli de caractère */ + +u8 *strfill(u8 *dst, u8 pattern, u32 size) +{ + u32 i; + for (i=0; i <= size; i++) + *(dst+i)=pattern; + *(dst+i+1)='\000'; + return dst; +} + +/******************************************************************************/ + +/* Renvoie la partie gauche d'une chaine */ + +void strright(u8 *src, u8 *dest, u32 size) { + u32 i; + for (i = 0; (*(src + i) != 0) && (i1) + strdelete(pos,1,i-1); + pos=strchr(pos+1, delim); + } +} diff --git a/system/system.c b/system/system.c index 43048f2..432155d 100755 --- a/system/system.c +++ b/system/system.c @@ -75,20 +75,21 @@ int main(void) strcpy(&noproc, &cpu.detectedname); getcpuinfos(&cpu); + printf (" -Detection du processeur\r\033[1m Revision \t:%d\r Modele \t:%d\r Famille \t:%d\r Nom cpuid\t:%s\rJeux d'instruction\t:%s\033[0m\000", cpu.stepping, cpu.models, cpu.family, &cpu.detectedname, + &cpu.techs); ok(); - u8 test[]="ceCI est UN(une) tes1\000"; - u8 test2[]="ceCI est UN(une) tes2!\000"; - printf(&test); - strreplace(&test, 'e', 'q'); - strreplace(&test2, '(', '['); - printf(&test); - printf(&test2); - + u8 dest[]="Ceci est un test pour voir si cela fonctionne correctement\000 "; + printf(&dest); + u8 src[]="POPPOPPOP\000"; + printf(&src); + printf("\r\n"); + strinsert(&src, &dest, 14); + printf(&dest); while (1) { key = waitascii(); putchar(key);