string legen

Status
Niet open voor verdere reacties.

Martijnvaanderi

Gebruiker
Lid geworden
22 mei 2007
Berichten
15
hallo,

ik loop tegen een probleempje aan.

ik gebruik de functie strcat() uit string.h in GCC

maar omdat deze functie in een loop zit wordt de string steeds langer en ik heb dubbele output... kortom hoe leeg ik die string weer???

declaratie:
Code:
char uitvoer[39] = "lynx -dump http://10.0.1.1?ip="
het gene wat in het loopje zit:
Code:
strcat(uitvoer,inet_ntoa(hun_adres.sin_addr));	system(uitvoer);

kan iemand mij helpen ? :-)

groetjes Martijn
 
Strings in C eindigen op een nul-karakter. Dus als de string uitvoer geleegd moet worden doe je:
Code:
uitvoer[0]=0;
 
@c_er: de waarde 0 in je string steken is niet hetzelfde als het null-karakter (geschreven als \0 trouwens)

De simpelste methode is inderdaad om een nieuwe waarde toe te kennen, namelijk een lege string.
Code:
uitvoer = "";
 
De simpelste methode is inderdaad om een nieuwe waarde toe te kennen, namelijk een lege string.
Code:
uitvoer = "";

Als uitvoer een array van char is (zoals de topic-starter heeft aangegeven) gaat dit echt niet werken.
 
Laatst bewerkt:
my bad. c_er zijn oplossing is idd correct voor een c-string.

@Martijn: programmeer je in C of C++ ? indien in het laatste kan je beter gebruik maken van <string> ipv <string.h> en je variabele van het type 'string' maken ipv een char-array.
concateneren van je string kan dan dmv de += operator
 
Wat je ook kan doen is het volgende:

Code:
char uitvoer[39] = "lynx -dump http://10.0.1.1?ip=";
char *p = strchr(uitvoer, 0);

in de loop:

Code:
strcpy(p, inet_ntoa(hun_adres.sin_addr));
system(uitvoer);


nu blijft het eerste gedeelte intakt en vervang je steeds het laatste gedeelte.
 
Volgens mij moet dit het ook doen:

Code:
char* uitvoer = "lynx -dump http://10.0.1.1?ip=";

Maar ik ben het met Johantrax eens dat het in c++ netter is om de class string te gebruiken, uit <string>. Maar in C doet bovenstaande oplossing het volgens mij goed, en het is wat flexibeler, omdat als je het commando wilt wijzigen, je ook de grootte van de array-index moet aanpassen. het is namelijk wel toevallig als alle commando's in 35 tekens passen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan