feat: ajout de fonctions dans la librairie string

This commit is contained in:
Nicolas Hordé 2018-08-17 18:10:20 +02:00
parent 56da8273e8
commit 49a4bd4640
4 changed files with 116 additions and 2 deletions

View File

@ -3,7 +3,7 @@ all: cos2000.img
cos2000.img: cos2000.img:
(dd if=/dev/zero of=cos2000.img count=2880 bs=512) (dd if=/dev/zero of=cos2000.img count=2880 bs=512)
(mkfs.msdos -F 12 -n "COS2000" cos2000.img) (mkfs.msdos -F 12 -n "COS2000" cos2000.img)
(mkdir ./mnt) (mkdir ./mnt -p)
(fusefat cos2000.img ./mnt -o rw+) (fusefat cos2000.img ./mnt -o rw+)
(cp ../boot/loader.sys ./mnt/) (cp ../boot/loader.sys ./mnt/)
(cp ../system/system.sys ./mnt/;sync) (cp ../system/system.sys ./mnt/;sync)

View File

@ -5,4 +5,10 @@ u32 strlen(const u8 *src);
u8 *strchr(const u8 *src, u8 achar); u8 *strchr(const u8 *src, u8 achar);
u8 *strncpy(const u8 *src,u8 *des,u32 count); u8 *strncpy(const u8 *src,u8 *des,u32 count);
u8 *strcat(const u8 *src,u8 *des); u8 *strcat(const u8 *src,u8 *des);
u8* strcpy(const u8 *src, u8 *des); 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 strinvert(u8 *src);
void strreplace(u8 *src, u8 search, u8 replaced);

View File

@ -68,6 +68,7 @@ u8 *strncpy(const u8 * src, u8 * des, u32 count)
/******************************************************************************/ /******************************************************************************/
/* concatene 2 chaines de caractère */ /* concatene 2 chaines de caractère */
u8 *strcat(const u8 * src, u8 * des) u8 *strcat(const u8 * src, u8 * des)
{ {
u8 *temp = des; u8 *temp = des;
@ -76,3 +77,101 @@ u8 *strcat(const u8 * src, u8 * des)
while ((*des++ = *src++) != 0) ; while ((*des++ = *src++) != 0) ;
return temp; return temp;
} }
/******************************************************************************/
/* Met en minuscule */
void strtolower(u8 * src)
{
while (*src != 0) {
if ((*src >= 'A') && (*src <= 'Z'))
*src=*src+'a'-'A';
src++;
}
}
/******************************************************************************/
/* Met en majuscule */
void strtoupper(u8 * src)
{
while (*src != 0) {
if ((*src >= 'a') && (*src <= 'z'))
*src=*src-('a'-'A');
src++;
}
}
/******************************************************************************/
/* inverse la casse */
void strinvertcase(u8 * src)
{
while (*src != 0) {
if ((*src >= 'A') && (*src <= 'Z'))
*src=*src+'a'-'A';
else if ((*src >= 'a') && (*src <= 'z'))
*src=*src-('a'-'A');
src++;
}
}
/******************************************************************************/
/* Met une majuscule et met le reste en minuscule */
void stronecase(u8 * src)
{
if ((*src >= 'a') && (*src <= 'z'))
*src=*src-('a'-'A');
while (*src != 0) {
src++;
if ((*src >= 'A') && (*src <= 'Z'))
*src=*src+'a'-'A';
}
}
/******************************************************************************/
/* Fixe la taille de la chaine */
void strsetlen(u8 * src, u8 size)
{
*(src+size)='\000';
}
/******************************************************************************/
/* Inverse la chaine */
void strinvert(u8 *src)
{
u8 *dst=src+strlen(src)-1;
while (src < dst) {
u8 char1=*dst;
u8 char2=*src;
*dst=char2;
*src=char1;
src++;
dst--;
}
}
/******************************************************************************/
/* Remplace tout les caractères rechercher par un autre */
void strreplace(u8 *src, u8 search, u8 replaced)
{
u8 *pos=strchr(src, search);
while (pos!=0)
{
*pos=replaced;
pos=strchr(src, search);
}
}

View File

@ -80,6 +80,15 @@ int main(void)
cpu.stepping, cpu.models, cpu.family, &cpu.detectedname, cpu.stepping, cpu.models, cpu.family, &cpu.detectedname,
&cpu.techs); &cpu.techs);
ok(); 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);
while (1) { while (1) {
key = waitascii(); key = waitascii();
putchar(key); putchar(key);