Toon posts:

[c] selectie uit een char[200] halen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met een stukje code waar ik de hele dag al op aan t broeden ben (in c), niet leuk dus O-). Het probleem is dit: ik lees een bestand in, wat er ongeveer als volgt uitziet:

entry1=bla
entry2=bla2
entry3=bla3

Hiervan wil ik het 'entry#=' gedeelte afhalen. De gehele regel staat in een char[200].

De oplossing die ik had bedacht is de volgende, alleen hangt hij hierdoor (en zonder char* casting begint ie te emmeren):

'sTemp' is hier de char[200], 't' idem dito alleen zonder 'entry#='

code:
1
2
3
4
5
6
7
8
for (teller=0; teller < strlen(sTemp); teller++){
   if (strcmp((char*)sTemp[teller], "="))
     gevonden=0;
     if (gevonden==0)
     {
       strcat(t,(char*)sTemp[teller]);
     }
  }


Iemand die mij uit de brand kan helpen? :>

[ Voor 8% gewijzigd door Verwijderd op 29-04-2003 23:44 ]


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Je moet iig eens de precieze werking van strcmp eens doorkijken (kijk vooral naar het return type). Daarnaast vraag ik me af waarom je uberhaupt zo graag strcmp wil gebruiken, terwijl je eigenlijk twee characters met elkaar aan het vergelijken bent.

Verwijderd

Topicstarter
Hmm verek ik ben de ==0 vergeten, maar goed dan werkt het nog niet. Misschien dat iemand een mooiere / elegantere oplossing heeft? Ik wil eigenlijk alleen het begin van de string tot aan het '=' teken weggooien, en het restant toevoegen aan mn dynamische lijst.

[ Voor 34% gewijzigd door Verwijderd op 30-04-2003 00:18 ]


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 15:24

johnwoo

3S-GTE

Als al die regeltjes zich aan de regel houden ( :P ) en netjes die = in zich hebben, kun je makkelijk met strchr zoeken naar die = in de regel, en alles wat daarna komt is dan de rest van de regel :P

code:
1
2
3
4
5
6
7
8
9
10
char *lpEqualSign;
char *lpTextAfterEqualSign;
// for (iedere lpRegel) {
      if (lpEqualSign = strchr(lpRegel, '=')) {
         lpTextAfterEqualSign = lpEqualSign + 1;
      } else {
         lpTextAfterEqualSign = lpRegel;
      }
      doeIetsMetRegel(lpTextAfterEqualSign);
// }


edit:
Syntax highlighter deed moeilijk, dan maar zonder highlighting

[ Voor 12% gewijzigd door johnwoo op 30-04-2003 00:35 ]

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Topicstarter
Ah man je bent een held :>! Trouwens nog wel even aangepast naar dit:
code:
1
if ((lpEqualSign = strchr(lpRegel, '='))!=NULL)

Ik had al wel naar strchr gekeken, maar ik wist niet zo goed wat ik met de pointer die je als returnwaarde krijgt moest doen. 1 ophogen zodat ie naar de volgende letter wijst en dan deze meegeven, waarom ben ik daar zelf niet op gekomen? |:(

[ Voor 18% gewijzigd door Verwijderd op 30-04-2003 00:55 ]