Find string i string

Tags:    c++ c++

Hej
Jeg kunne godt tænke mig en funktion der kan finde en string i en string, men kan af en eller anden frund ikke finde udaf at lave det.

Det skal være lavet i C.
Hvis str1 findes i str2 skal funktionen retunere 1 eller 0.

Det burde ikke være særlig svært at lave, men jeg tror jeg har en lidt dårlig dag i dag.... Er der en der er sød at hjælpe.....

Janus

P.s Det skal bruges som en kommando fortolker på en 8052 CPU (men det har ikke betydning for koden)




2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Brug strstr() ??
http://www.cppreference.com/stdstring_details.html#strstr <-- tjek den side!

Ud fra det burde du kunne lave din egen funktion :)

//Martin Wolf



Tak Martin Wolf !!!

Fik lige bixet en sammen selv, men giver UP til dig som lovet
"
bit _idata CommandStart=0; //bit =bool
/*unsigned*/ int CommandNr;
unsigned int CommandSize;
char CommandBuffer[1024];

char _xdata ModemCyclicBuffer[2048];
int _data ModemBufferWritePointer=0;
int _data ModemBufferReadPointer=0;
char _xdata DataCyclicBuffer[2048];
int _idata DataBufferWritePointer=0;
int _idata DataBufferReadPointer=0;

void Init()
{
PseudoTime=0xff;
CommandSize=0;
CommandNr=0;
CommandBuffer[0]='\\0';
DataBufferReadPointer=0;
DataBufferWritePointer=0;
DataCyclicBuffer[0]=0;
}

void Protocol() //Virker men tager ikke højde for hvilken række følge ord kommer i
{
HW_ResetWatchdogCounter(); //Nulstiller WDT

switch (CommandNr)
{
case 481 :
{

if(memcmp(CALL,CommandBuffer,CommandSize)==0) //Bør sættes på alle komandoer
{
while(TIME_GetPseudoTime()<(PseudoTime+10)) //Delay funktion
HW_ResetWatchdogCounter(); //Nulstiller WDT
// LCD_PutTextLine("COMMAND TEST", LCD_LINE_UPPER); //Skriver til linie 1 på LCD
// LCD_PutTextLine("CALL COMMAND", LCD_LINE_LOWER); //Skriver til linie 2 på LCD

strcpy(LCD_Lines[0],"COMMAND TEST");
strcpy(LCD_Lines[1],"CALL COMMAND");

LCD_Update(); //Opdatere display
}
}
break;
}
}


void main()
{
while(1)
{
if (DataBufferWritePointer!=DataBufferReadPointer) //Modtages en byte
{

if(DataCyclicBuffer[DataBufferReadPointer]=='$')
{
CommandStart=1;
CommandNr=0;
CommandSize=0;
}

if(DataCyclicBuffer[DataBufferReadPointer]==';')
{
Protocol();//Commando fortolker
CommandStart=0;
CommandNr=0;
CommandBuffer[0]='\\0';
CommandSize=0;
}

if(CommandStart==1)
{
CommandBuffer[CommandSize]=DataCyclicBuffer[DataBufferReadPointer];
CommandBuffer[CommandSize+1]='\\0';
CommandNr=CommandNr+DataCyclicBuffer[DataBufferReadPointer];
CommandSize++;
}

if(DataCyclicBuffer[DataBufferReadPointer]=='=' && CommandStart==1)
{
Protocol();//Commando fortolker
}

DataBufferReadPointer++;
if (DataBufferReadPointer>=2048)
DataBufferReadPointer=0;
}
}
}

"
Tak for hjælpen




t