ll

Dependencies:   mbed

string.cpp

Committer:
adrianow795
Date:
2017-05-09
Revision:
0:a8e3f4b25a52

File content as of revision 0:a8e3f4b25a52:

#include "string.h"
#include <stdio.h>
#include <string.h>

#define NULL 0

void CopyString(char pcSource[],char pcDestination[]) {
    
   strcpy (pcDestination, pcSource);
}

enum CompResult eCompareString(char pcStr1[],char pcStr2[]) {
    
    if(!strcmp(pcStr1, pcStr2))
            return EQUAL;
    else
        return DIFFERENT;
}

void AppendString(char pcSourceStr[],char pcDestinationStr[]) {
    
    unsigned char ucLicznikZnaku;
    
    for(ucLicznikZnaku=0;pcDestinationStr[ucLicznikZnaku]!=NULL;ucLicznikZnaku++) {}
    CopyString(pcSourceStr,pcDestinationStr+ucLicznikZnaku);
}

void ReplaceCharactersInString(char pcString[],char cOldChar,char cNewChar){
    
    unsigned char ucLicznikZnaku;
    
    for(ucLicznikZnaku=0;pcString[ucLicznikZnaku]!=NULL;ucLicznikZnaku++) {
        if(cOldChar==pcString[ucLicznikZnaku]){
            pcString[ucLicznikZnaku]=cNewChar;
        }
    }        
}

/////////////

void UIntToHexStr(unsigned int uiValue, char pcStr[]){
    
    unsigned char ucNibbleCounter;
    unsigned char ucCurrentNibble;
    
    pcStr[0]='0';
    pcStr[1]='x';
    pcStr[6]=NULL;
    
    for(ucNibbleCounter=0; ucNibbleCounter<4; ucNibbleCounter++){
        ucCurrentNibble=(uiValue >> (ucNibbleCounter*4))&0x0F;
        if(ucCurrentNibble<10){
            pcStr[5-ucNibbleCounter] = '0'+ucCurrentNibble;
        } 
        else{
            pcStr[5-ucNibbleCounter] = 'A'+(ucCurrentNibble-10);
        }
    }
}
 
 
enum Result {OK, ERROR};

enum Result eHexStringToUInt(char pcStr[], unsigned int *puiValue){
    
    unsigned char ucCharacterCounter;
    unsigned char ucCurrentCharacter;
    
    *puiValue=0;
    
    if((pcStr[0]!='0') || (pcStr[1]!='x') || (pcStr[2]==NULL)){
        return ERROR;
    }
    for(ucCharacterCounter=2; ucCharacterCounter<7; ucCharacterCounter++){
        ucCurrentCharacter = pcStr[ucCharacterCounter];
        if(ucCurrentCharacter==NULL){
            return OK;
        }
        else if(ucCharacterCounter==6){
            return ERROR;
        }
        *puiValue = *puiValue << 4;
        if((ucCurrentCharacter <= '9') && (ucCurrentCharacter >= '0')){
            ucCurrentCharacter = ucCurrentCharacter-'0';
        }
        else if((ucCurrentCharacter <= 'F') && (ucCurrentCharacter >= 'A')){
            ucCurrentCharacter = ucCurrentCharacter-'A'+10;
        }
        else{
            return ERROR;
        }
        *puiValue = (*puiValue) | ucCurrentCharacter;
    }
    return ERROR;
}

void AppendUIntToString(unsigned int uiValue, char pcDestinationStr[]){
    
    unsigned char ucIndeksKonca;

    for(ucIndeksKonca=0; pcDestinationStr[ucIndeksKonca]!=NULL; ucIndeksKonca++){}
    UIntToHexStr(uiValue, &pcDestinationStr[ucIndeksKonca]);
}