# Variable in Verbindung mit dem Befehl 'system'



## Radhad (11. April 2003)

Hallo Leute!

Ich wollte mir das mühselige net send batch-dateien erleichtern und ein C-Programm schreiben, dass net send ausführt. Problem ist allerdings dass der befehl 'system' die Variablen nicht akzeptiert. was kann ich da machen?



> system("net send -sendip -sendtext");



das ist der aktuelle stand... vorher hatte ich statt -sendip %c dort stehen.

weiß jemand wie es richtig geht? 

MfG Radhad


----------



## Tobias K. (11. April 2003)

moin


das das so nicht geht ist doch klar!

erstell dir nen string, pack in den string alles rein was du brauchst und dann pack den string bei system() als argument rein!

in c würde das dann so ausshen:

char string[80];

strcpy(string, "net send ");
strcat(string, "- ");
strcat(string, sendip);
strcat(string, " - ");
strcat(string, sendtext);

system(string);


mfg
umbrasaxum


----------



## Radhad (11. April 2003)

ah cool, danke


----------



## Radhad (11. April 2003)

2 Fehler im Compiler...

'strcat' undeclared identifier...


----------



## Daniel Toplak (11. April 2003)

#include <string.h>

Gruss Homer


----------



## Tobias K. (11. April 2003)

moin


*kopfschüttel*
ich nehme mal ganz stark an das du noch nie mit c/c++ gearbeitest hast und auch keine ahnung davon hast, wenn ich mich täusche sag es.

aber ok.

du musst oben im quellcode "#include <string.h>" einfügen!


mfg
umbrasaxum


----------



## Radhad (11. April 2003)

doch habe ich, allerdings lernen wir das in der schule und die bibliothek string.h ist mir noch net bekannt ^^ ich kann zwar etwas mehr als das was wir bisher in der schule gemacht haben, aber man würde zu mir noch anfänger sagen  den system befehl hatten wir nur in verbindung mit cls bisher ^^


----------



## Tobias K. (11. April 2003)

moin


naja, ok.
aller anfang ist schwer, sag ich da nur.


mfg
umbrasaxum


----------



## onkeldieter (2. Juni 2008)

tag auch,

ich habe ein kleines anderes prog geschrieben und nutze diese funktionen ... allerdings kommt an folgender stelle immer ein "speicherzugriffsfehler":

strcat(string, sendip);



ausschnitt:


> char* string = 	"ftp -v ";
> printf("string: %s\n\n",string);
> 
> printf("Adresse: ");
> ...




weiß jemand warum dem so ist?




p.s.: hab net sooo viel ahnung von C


----------



## MCoder (2. Juni 2008)

Der Fehler tritt auf, weil die Schreibweise 
	
	
	



```
char * string = ...
```
 einen konstanten String erzeugt, der nicht mehr verändert werden kann. Abgesehen davon muss das Ziel von strcat (die Variable "string") genügend Speicher reservieren, damit auch der anzuhängende String noch hineinpasst. Mach's doch so, wie in diesem Thread schon beschrieben wurde:

```
char string[80]; 
strcpy(string, "ftp -v ");

// ... der Rest
```
Gruß
MCoder


----------



## onkeldieter (2. Juni 2008)

okay... vielen dank... habs geändert und es läuft alles planmäßig

mein problem war, das ich es anfangs so hatte, aber irgendeinen fehler (weiß nicht mehr welchen) und dann hab ichs wohl falsch korrigiert....

thx
onkel


----------



## devDevil (2. Juni 2008)

C: printf und char-Array => Zusammenbastenln

```
#include <stdlib.h>
#include <string.h> 

char buffer[1024];
printf(buffer, "net send -%s -%s", sendip, sendtext);
system(buffer);
```

C++: std:stringstream => Zusammenbasteln:

```
#include <sstream> // std::ostringstream
#include <cstdlib> // std::system

std::ostringstream ss;
ss << "net send -" << sendip << " -" << sendtext;
std::system(ss.str().c_str());
```


----------



## Gast (19. Juli 2009)

versuch doch mal 

  system("shutdown.exe -s")
  system("PAUSE");	
  return 0;
}


----------



## Asix (20. Juli 2009)

Na Na Na ;-)

Wobei so stellt sich raus, ob er minimal C++ Ahnung hat ;D


----------



## Gast (20. Juli 2009)

für die C version besser vllt:


```
#include <stdlib.h>
#include <string.h>
 
char *buffer = malloc( strlen( sendip ) + strlen( sendtext ) + 20 );
sprintf(buffer, "net send -%s -%s", sendip, sendtext );
system(buffer);
free( buffer );
```


----------

