Forum: PC-Programmierung ANSI-C Parameter Filtern


von Michael L. (nemesisod)


Lesenswert?

Hallo zusammen,

ich habe ein kleines Problem, aber wahrscheinlich stelle ich mich gerade 
sehr dumm an.

Ich habe ein String, welcher als Parameter meinem Programm beim Starten 
übergeben wird. Nun möchte ich einzelne Teile dieses Strings zerlegen 
und getrennt aus geben.

Also:

Der String:  "-mod=int"
Das Ergebnis soll sein: "mod" und in einer zweiten Variable "int".
So das ich nun den Modus anpassen kann.

Ich hatte mir das in etwa so gedacht, aber dann stürtz das Programm ab:
1
char *select(char *param)
2
{
3
int j = 0;
4
int start_befehl = 0;
5
int start_data = 0;
6
char *buf = "";
7
char *buf2 = "";
8
9
while(param[j] != 0)
10
{
11
  if(param[j] == '=')
12
     start_data = 1;                    
13
14
  if((start_befehl == 1) && !(start_data == 1))
15
     *buf++ = param[j];                
16
  
17
  if(start_data == 1)
18
     *buf2++ = param[j];              
19
            
20
  if(param[j] == '-')
21
     start_befehl = 1;                    
22
23
  j++;                 
24
}
25
*buf = '\0';
26
*buf2 = '\0';
27
   
28
return buf;
29
}

Also in param steht der String, und zurück gegeben soll erstmal nur das 
"mod".

Was mache ich falsch???

Danke.

von Thomas B. (detritus)


Lesenswert?

1
char *buf = "";
2
char *buf2 = "";

Damit reservierst du keinen Speicherplatz für die Buffer-Arrays, das 
sollte so aussehen:
1
char buf [20];
2
char buf2 [20];

20 ist natürlich nur eine Hausnummer und kann bei langen Zeichenketten 
ebenfalls abstürzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.