Just nu i M3-nätverket
Gå till innehåll

Söker efter ett tecken i en sträng.


Micke_Johansson

Rekommendera Poster

Micke_Johansson

Undrar vad som är smidigaste sättet att hitta om ett visst tecken finns med i en sträng.

 

Jag har följande kod just nu:

int j;

char tmp;

 

for (j=0; j<strlen(name); j++)

{

tmp = name[j];

IMS_LOGE("tecken = %c",tmp);

if (tmp == ':')

{

return TRUE;

} else {

return FALSE;

}

}

 

 

Mvh

Micke

Länk till kommentar
Dela på andra webbplatser

  • 2 months later...
alsogringo

Undrar vad som är smidigaste sättet att hitta om ett visst tecken finns med i en sträng.

 

Jag har följande kod just nu:

int j;

char tmp;

 

for (j=0; j<strlen(name); j++)

{

tmp = name[j];

IMS_LOGE("tecken = %c",tmp);

if (tmp == ':')

{

return TRUE;

} else {

return FALSE;

}

}

 

 

Mvh

Micke

 

 

Det smidigaste är att sätta en pekar på början av din sträng och leta sekventiellt

 

for (char *p = name; *p; ++p) 
{
 if ( *p == ':' ) return TRUE;
}
return FALSE;

 

eftersom strängar alltid slutar med \0 så fungerar loopen ovan

men för säkerhets skull kan man ha en max storlek:

 

for (char *p = name; *p && p < name + 255; ++p) 
{
 if ( *p == ':' ) return TRUE;
}
return FALSE;

 

ett annat alternativ är att använda en C runtime funktion strchr

 

return ( strchr( name, ':' ) != NULL )  != NULL;

Länk till kommentar
Dela på andra webbplatser

  • 1 year later...
Gäst GustafH

Vad sägs om detta exempel?

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

int main()
{
   char* string = "Apelsiner is very good"; // gör en string
   char* compare = "Apelsiner";
   if(strcmp(string, compare)) // if-sats for att se om "Apelsiner" finns i en string
   {
     printf("Ordet apelsiner hittades i din string!\n");
   }
}

strcmp brukar jag använda i min programmering. Notera att jag inte har testat det på Windows, utan endast på Linux.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...