Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Char array, bzw string

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

21.10.2013, aktualisiert 20:20 Uhr, 2891 Aufrufe, 8 Kommentare

Hallo, versuche mich an der Programmierung mit C und will jetzt irgendwie eine Funktion schreiben, die mir die Text Eingabe in der Konsole in einem Dynamischen Array speichert, sodass ich nicht unnötig viel Speicher reservieren muss.

Habe es schon hin bekommen, dass es innerhalb der Funktion funktioniert, nur bekomme ich das char array nicht zurück in die main.

01.
char ZK(char* Test) 
02.
03.
	char Text[1000]; 
04.
 
05.
	int laeng=0,i,j; 
06.
	fgets(Text, 1000, stdin); 
07.
	//printf("%s",Text); 
08.
	laeng=strlen(Text); 
09.
	Test=(char*) malloc((laeng+1) * sizeof(char)); 
10.
	 
11.
	for(i=0;i<=laeng;i++){ 
12.
		if(Text[i]!='\n') 
13.
			Test[i]=Text[i]; 
14.
		else 
15.
			Test[i]=NULL; 
16.
17.
	//Test[i]='a'; 
18.
	printf("%s",Test); 
19.
	//printf("\n"); 
20.
	 
21.
	//free(Test); 
22.
	return *Test; 
23.
}
01.
 
02.
 
03.
#include "Header.h" 
04.
#include "stdlib.h" 
05.
#include "stdio.h" 
06.
 
07.
int main(void){ 
08.
	char *Test="L"; 
09.
	printf("Gibt einen Text ein\n"); 
10.
	ZK(Test); 
11.
	printf("\n"); 
12.
	printf("%s\n",Test); 
13.
	system("pause"); 
14.
 
15.
 
16.
}
Es wird eine Zeile ausgeben, in der der eingegebene String steht (das printf in ZK) und eine Zeile in der L steht, das heist, Test wird nicht in der main überschrieben, sondern nur lokal in der ZK behandelt.
Wie bekomme ich jetzt die Test aus der ZK zurück in die main?
das mit dem return Test, war auch nur ein Test, das will ich so nicht behalten.
Schonmal danke für eine Antwort.
Mitglied: rubberman
21.10.2013, aktualisiert um 20:01 Uhr
Hallo Power-Poler,

C ist bei solchen (vermeintlich einfachen) Dingen etwas für Masochisten (zumal du offenbar Java gewohnt bist). Du bist für die Speicherverwaltung selbst verantwortlich. Das heißt, für eine Eingabe mit dynamischer Länge musst du den verwendeten Speicher auch dynamisch erweitern (malloc, realloc). Das erfordert dann auch ein zeichenweises Einlesen. Die fgetc Funktion hat sich dafür bewährt.

Kommentiertes Beispiel, so wie ich Benutzereingaben für mich definiert und umgesetzt habe:
01.
#include <stdio.h> 
02.
#include <stdlib.h> 
03.
 
04.
/* Benutzereingabe als nullterminierten String (ohne Zeilenumbruch) lesen mit dynamischer Speichererweiterung */ 
05.
int Fn_GetInput(char ** const pszInput_out, size_t * const pcchLength_out) 
06.
07.
  size_t ic = 0; // Index im Puffer - später Anzahl Zeichen 
08.
  int ch = EOF; // hält später den ASCII Wert des eingelesenen Zeichens 
09.
  char *szBuffer = malloc(1), *pchMoreSpace = NULL; // Speicher für den Puffer reservieren, Pointer für eine Puffererweiterung deklarieren 
10.
  if (pszInput_out) *pszInput_out = NULL; // Initialwert 
11.
  if (pcchLength_out) *pcchLength_out = 0; // Initialwert 
12.
  if (szBuffer) // wenn malloc() erfolgreich war 
13.
14.
    while ((ch = fgetc(stdin)) != '\n' && ch != EOF && !feof(stdin)) // lese das (nächste) Zeichen, iteriere solang das Zeichen kein Zeilenumbruch ist und nicht das Ende des eingehenden Streams erreicht ist 
15.
16.
      szBuffer[ic++] = ch; // weise das Zeichen der aktuellen Position (ic=Index) im Puffer zu und erhöhe danach um 1 (ic++=nächster Index=Stringlänge) 
17.
      pchMoreSpace = realloc(szBuffer, ic + 1); // Puffergröße um 1 erweitern 
18.
      if (!pchMoreSpace) // falls die Erweiterung fehlgeschlagen ist 
19.
20.
        free(szBuffer); // Speicher freigeben 
21.
        return EXIT_FAILURE; // Fehler, raus hier 
22.
23.
      szBuffer = pchMoreSpace; // neuen Pointer der Variablen szBuffer zuweisen 
24.
25.
    szBuffer[ic] = 0; // Nullterminierung 
26.
    if (pszInput_out) 
27.
      *pszInput_out = szBuffer; // Pointer zum Puffer geht nach draußen 
28.
    else 
29.
      free(szBuffer); // falls ein Nullpointer übergeben wurde, Speicher freigeben 
30.
    if (pcchLength_out) *pcchLength_out = ic; // Anzahl eingelesener Zeichen geht nach draußen 
31.
32.
  return (szBuffer == NULL); // 0 (EXIT_SUCCESS) wenn szBuffer nicht NULL 
33.
} // ACHTUNG: Reservierten Speicher in der aufrufenden Funktion freigeben! 
34.
 
35.
 
36.
int main(void) 
37.
38.
  char *szStr = NULL; 
39.
  size_t cchLen = 0; 
40.
 
41.
  if (EXIT_SUCCESS == Fn_GetInput(&szStr, &cchLen)) // Benutzereingabe einholen und auf Verarbeitungsfehler prüfen. 
42.
43.
    printf("\nFn_GetInput:\n Laenge: %u\n String: %s\n", cchLen, szStr); // Anzeigen, was wir bekommen haben. 
44.
    free(szStr); // Speicher (reserviert in Fn_GetInput()) freigeben, sobald szStr nicht länger benötigt wird! 
45.
    return EXIT_SUCCESS; 
46.
47.
 
48.
  fprintf(stderr, "Fn_GetInput: Verarbeitungsfehler.\n"); 
49.
  return EXIT_FAILURE; 
50.
}
Falls du statt einem C Compiler einen C++ Compiler verwenden solltest, must du malloc und realloc noch das Casting zum Charpointer voranstellen.

Der Rückgabewert der Funktion ist 0 wenn bei der Eingabe alles OK war.

Grüße
rubberman
Bitte warten ..
Mitglied: Power-Poler
21.10.2013 um 20:18 Uhr
Erstmal Danke für deine Antwort.
(Sieht man das an meinen Quellcode, dass ich mich vorher an Java versucht habe ?)
Zu deinem code:
ähhm da muss ich mich erst einmal rein arbeiten.

Denke man sieht auch an meinen code, dass ich noch am Anfang stehe.
Melde mich wieder, sobald ich mich da hineingearbeitet habe.


(Oh Gott, da liegt ja scheinbar noch einiges vor mir, bis ich C kann... )
Bitte warten ..
Mitglied: rubberman
21.10.2013 um 21:15 Uhr
Hallo Power-Poler.

(Sieht man das an meinen Quellcode, dass ich mich vorher an Java versucht habe ?)
Nee, deinen früheren Postings aber

ähhm da muss ich mich erst einmal rein arbeiten
Jepp. Ich hoffe du kannst mit meinen Kommentaren was anfangen. Bei Unklarheiten, einfach melden.

(Oh Gott, da liegt ja scheinbar noch einiges vor mir, bis ich C kann... )
Ich arbeite nur ab und an mit C. Von "können" kann also bei mir auch nach 2 Jahren nicht die Rede sein. Ich habe mich damals dazu entschieden C zu lernen wegen der Performance und der einfachen Handhabung der Windows API. Aber ob ich von Java auf C umsteigen würde ...? Wohl noch eher auf C++, dann bleibt dir wenigstens die Objektorientierung erhalten (auch wenn das dort noch mal was ganz anderes ist).

Grüße
rubberman
Bitte warten ..
Mitglied: Guenni
22.10.2013 um 06:27 Uhr
Hi Power-Poler,

wenn du schon C++ programmieren willst, so nutze doch einfach das String-Objekt.

http://www.willemer.de/informatik/cpp/string.htm

Gruß
Günni
Bitte warten ..
Mitglied: Power-Poler
22.10.2013, aktualisiert um 07:03 Uhr
Der Grund warum C ist eigentlich ganz einfach.
Gezwungener maßen, ich muss es machen, es ist teil meines Studiengengans
nächstes Semester munkelt man, ist es C++
Aber ich denke wenn man etwas mehr macht, als nur die Übungsblätter vom Prof, kann das nur von Vorteil sein.
Danke für eure Unterstützung
Die Übungsblätter laufen meistens nur darauf hinaus:
Schreibe ein Programm das zwei eingelesene Zahlen addiert...
Bitte warten ..
Mitglied: rubberman
22.10.2013 um 09:31 Uhr
Schreibe ein Programm das zwei eingelesene Zahlen addiert...
Wo du mit C schon beim nächsten Problem bist -> konvertiere sicher von String zu Zahl

Grüße
rubberman
Bitte warten ..
Mitglied: Power-Poler
22.10.2013 um 11:21 Uhr
Naja, wir benutzen in der Regel nur %i und manchmal %f.
zum einlesen scanf_s (Weil laut Visual Studio 2012 scanf zu unsicher ist
beim konvertieren sind wir noch nicht
Bitte warten ..
Mitglied: rubberman
22.10.2013 um 22:02 Uhr
Ja, scanf funktioniert zu dem Zweck schon auch. Aus Spaß mal eine etwas ausführlichere Möglichkeit mit strtol (in das Beispiel von oben eingebaut). Kannst ja mal versuchen ob du folgen kannst, Kommentare sind wieder dabei.
01.
#include <stdio.h>  // Fn_GetInput 
02.
#include <stdlib.h> // Fn_GetInput, Fn_GetLong 
03.
#include <string.h> // Fn_GetLong 
04.
#include <ctype.h>  // Fn_GetLong 
05.
#include <errno.h>  // Fn_GetLong 
06.
 
07.
/* Benutzereingabe als nullterminierten String (ohne Zeilenumbruch) lesen mit dynamischer Speichererweiterung */ 
08.
int Fn_GetInput(char ** const pszInput_out, size_t * const pcchLength_out) 
09.
10.
  size_t ic = 0; // Index im Puffer - später Anzahl Zeichen 
11.
  int ch = EOF; // hält später den ASCII Wert des eingelesenen Zeichens 
12.
  char *szBuffer = malloc(1), *pchMoreSpace = NULL; // Speicher für den Puffer reservieren, Pointer für eine Puffererweiterung deklarieren 
13.
  if (pszInput_out) *pszInput_out = NULL; // Initialwert 
14.
  if (pcchLength_out) *pcchLength_out = 0; // Initialwert 
15.
  if (szBuffer) // wenn malloc() erfolgreich war 
16.
17.
    while ((ch = fgetc(stdin)) != '\n' && ch != EOF && !feof(stdin)) // lese das (nächste) Zeichen, iteriere solang das Zeichen kein Zeilenumbruch ist und nicht das Ende des eingehenden Streams erreicht ist 
18.
19.
      szBuffer[ic++] = ch; // weise das Zeichen der aktuellen Position (ic=Index) im Puffer zu und erhöhe danach um 1 (ic++=nächster Index=Stringlänge) 
20.
      pchMoreSpace = realloc(szBuffer, ic + 1); // Puffergröße um 1 erweitern 
21.
      if (!pchMoreSpace) // falls die Erweiterung fehlgeschlagen ist 
22.
23.
        free(szBuffer); // Speicher freigeben 
24.
        return EXIT_FAILURE; // Fehler, raus hier 
25.
26.
      szBuffer = pchMoreSpace; // neuen Pointer der Variablen szBuffer zuweisen 
27.
28.
    szBuffer[ic] = 0; // Nullterminierung 
29.
    if (pszInput_out) 
30.
      *pszInput_out = szBuffer; // Pointer zum Puffer geht nach draußen 
31.
    else 
32.
      free(szBuffer); // falls ein Nullpointer übergeben wurde, Speicher freigeben 
33.
    if (pcchLength_out) *pcchLength_out = ic; // Anzahl eingelesener Zeichen geht nach draußen 
34.
35.
  return (szBuffer == NULL); // 0 (EXIT_SUCCESS) wenn szBuffer nicht NULL 
36.
} // ACHTUNG: Reservierten Speicher in der aufrufenden Funktion freigeben! 
37.
 
38.
/* C-String zu Long Integer */ 
39.
unsigned Fn_GetLong(const char * const szNum_in, const int iBase_in, long * const pNum_out) 
40.
41.
  char *szCpy = NULL, *szTrunc = NULL, *pchEnd = NULL; // szCpy bekommt eine Kopie von szNum_in, szTrunc bekommt einen Pointer zum ersten Zeichen in szCpy das kein Whitespace ist, der Variablen pchEnd wird strtol() den Pointer zuweisen, an dem die Verarbeitung abgebrochen wurde 
42.
  unsigned rgbitRet = 0; // zurückgegebene Fehlerbits 
43.
  if (pNum_out) *pNum_out = 0; // Initialwert 
44.
  if (!szNum_in || !pNum_out || iBase_in < 0 || iBase_in > 36 || iBase_in == 1) return 8; // wenn einer der übergebenen Pointer NULL ist oder iBase_in nicht zwischen 0 und 36 liegt bzw. 1 ist, Fatal Error und raus hier 
45.
  szCpy = malloc(strlen(szNum_in) + 1); // Speicher für szCpy reservieren 
46.
  if (!szCpy) return 8; // wenn malloc() fehlgeschlagen ist, Fatal Error und raus 
47.
  szTrunc = strcpy(szCpy, szNum_in); // String kopieren, um nicht über ein Cast letztlich doch im als konstant deklarierten Speicherbereich von szNum_in arbeiten zu müssen 
48.
  while (isspace(*szTrunc)) ++szTrunc; // führende Whitespaces "abschneiden", danach zeigt der Pointer auf das erste Zeichen innerhalb szCpy das kein Whitespace ist 
49.
  errno = 0; // der Integerwert errno wird durch strtol() mit der Konstante ERANGE befüllt, wenn der Bereich eines Long Integer überschritten wird 
50.
  *pNum_out = strtol(szNum_in, &pchEnd, iBase_in); // die eigentliche C Funktion String zu Long Integer 
51.
  if (ERANGE == errno) rgbitRet |= 4; // Zahl außerhalb Typbreite? 
52.
  if // hier soll betrachtet werden, ob strtol() 0 zurückgibt, weil "0" gelesen wurde, oder weil kein numerischer String zu extrahieren war - Bsp.: "0$" OK, "$" nicht OK 
53.
54.
    *pNum_out == 0 // sollte strtol() etwas anderes als 0 zurückgeben, OK und der Rest braucht nicht betrachtet zu werden 
55.
    && ! // das ! beachten 
56.
57.
      szTrunc[0] == 48 // wenn das erste Zeichen '0' ist, dann OK 
58.
      || // oder 
59.
60.
        (szTrunc[0] == 43 || szTrunc[0] == 45) // wenn das erste Zeichen '+' oder '-' ist ... 
61.
        && szTrunc[1] == 48 // ... und das zweite Zeichen '0', dann auch OK 
62.
63.
64.
  ) rgbitRet |= 4; // Ergo: Folgt nach ggf. abgeschnittenen führenden Whitespaces ein Teilstring, der nicht numerisch interpretiert werden konnte? 
65.
  free(szCpy); // Speicher freigeben 
66.
  if (*pchEnd) rgbitRet |= 2; // Abbruch nicht an Nullterminierung? 
67.
  if (isspace(*szNum_in)) rgbitRet |= 1; // Whitespace am Stringanfang? 
68.
  return rgbitRet; // 0 wenn OK, sonst Flags: 2^0 - Whitespaces am Stringanfang, 2^1 - Stringende nicht numerisch, 2^2 - nicht numerisch interpretierbar oder numerischer Stringteil außerhalb Typbreite, (2^3 - Fatal Error, siehe oben) 
69.
70.
 
71.
// wenn Fn_GetLong() eine Zahl von 1 bis 3 zurückgibt, war strtol() in der Lage einen Long Integer vom Stringanfang zu extrahieren 
72.
#define OK  0 
73.
#define ERR 4 
74.
 
75.
int main(void) 
76.
77.
  char *szStr = NULL; 
78.
  size_t cchLen = 0; 
79.
 
80.
  long lNum = 0; 
81.
  unsigned rgbitFlags = -1, i = 0; 
82.
  const char * const rgszErrMsg[4] = {"vorangestellte Whitespaces", "Abbruch vor Stringende", "nicht als Long Integer interpretiertbar", "Anwender-/Verarbeitungsfehler"}; 
83.
  const char * const rgszAckMsg[4] = {"keine vorangestellten Whitespaces", "Abbruch am Stringende", "als Long Integer interpretiertbar", "kein Anwender-/Verarbeitungsfehler"}; 
84.
 
85.
  if (EXIT_SUCCESS == Fn_GetInput(&szStr, &cchLen)) // Benutzereingabe einholen und auf Verarbeitungsfehler prüfen. 
86.
87.
 
88.
    printf("\nFn_GetInput:\n Laenge: %u\n String: %s\n", cchLen, szStr); // Anzeigen, was wir bekommen haben. 
89.
 
90.
    rgbitFlags = Fn_GetLong(szStr, 10, &lNum); // Versuch die Benutzereingabe als Long Integer zu interpretieren. 
91.
 
92.
    free(szStr); // Speicher (reserviert in Fn_GetInput()) freigeben, da szStr nicht länger benötigt wird! 
93.
 
94.
    // Beispiel, wie man auf die einzelnen Flags zugreifen könnte. 
95.
    puts("\nFn_GetLong:\n Fehlerflags"); 
96.
    for (; i < 4; ++i) 
97.
98.
      if ((rgbitFlags >> i) & 1) 
99.
        fprintf(stderr, "  1 - %s\n", rgszErrMsg[i]); 
100.
      else 
101.
        printf("  0 - OK (%s)\n", rgszAckMsg[i]); 
102.
103.
 
104.
    // Beispiel, wie man den Rückgabewert weiterhin interpretieren kann. 
105.
    if (rgbitFlags == OK) 
106.
107.
      printf(" Gesamter String konnte als Long Integer interpretiert werden:\n  %ld\n", lNum); 
108.
      return EXIT_SUCCESS; 
109.
110.
    else if (rgbitFlags < ERR) 
111.
112.
        printf(" Long Integer wurde aus Teilstring extrahiert:\n  %ld\n", lNum); 
113.
        return EXIT_SUCCESS; 
114.
115.
      else 
116.
117.
        fprintf(stderr, " String/-anfang konnte nicht als Long Integer interpretiert werden.\n"); 
118.
        return EXIT_FAILURE; 
119.
120.
121.
 
122.
  fprintf(stderr, "Fn_GetInput: Verarbeitungsfehler.\n"); 
123.
  return EXIT_FAILURE; 
124.
}
Die Fn_GetLong gibt eine Bitmaske als unsigned int zurück, in der einzelne Fehlerflags gesetzt werden. Diese kannst du verarbeiten und später in deinem Programm selbst entscheiden welche Eingaben du als gültig akzeptierst.

Grüße
rubberman
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
PowerShell Array Elements zum String
gelöst Frage von derhoeppiBatch & Shell1 Kommentar

Hallo, ich stehe vor folgender Herausforderung. Nachdem ich nun erfolgreich zwei Arrays vergleichen kann in dem ganze Zahlen stecken, ...

Visual Studio

String bzw Char in Argumentenkette einbinden, möglich?

gelöst Frage von nepixlVisual Studio4 Kommentare

Hallo zusammen, aktuell bastel ich ein kleines Progrämmchen via VB 2010 Express. Dieses Tool soll dem User so einfach ...

C und C++

String einlesen in Array und wieder ausgeben von hinten

Frage von ProtectedC und C++4 Kommentare

Hallo, ich würde gerne einen String einlesen bzw. char und dann andersrum wieder ausgeben. Also: Otto Maoam zu: maoaM ...

Batch & Shell

PowerShell String zerlegen in Array, DataTable, Hashtable speichern

gelöst Frage von derhoeppiBatch & Shell7 Kommentare

Guten Morgen, leider habe wieder ein Thema beim zerlegen eines Strings. Folgendes Problem: Die Rückgabe eines Admintools liefert mir ...

Neue Wissensbeiträge
Sicherheit
Adminrechte dank Bug in Intel HD Graphics Treiber
Information von DerWoWusste vor 9 StundenSicherheit

Intel HD graphics 4200 und neuer (4400, 4600 520,530,620, 630,) sind auf jeden Fall betroffen und bereinigte Treiber sind ...

Router & Routing

Endlich: Reines Kabel-TV Modem in D erhältlich !

Information von aqui vor 3 TagenRouter & Routing10 Kommentare

Mit dem Technicolor TC4400-EU Modem sind nun auch Breitband Router ohne integriertes Modem oder Firewalls wie z.B. die pfSense ...

Netzwerkgrundlagen
The Illustrated TLS Connection
Information von Lochkartenstanzer vor 3 TagenNetzwerkgrundlagen1 Kommentar

Moin, Unter findet man eine gelungene Erläuterung von TLS. Fördert sehr das verständnis darüber, was da passiert. lks

Windows 10

Zuverlässiger Remove-AppxProvisionedPackage Ausführen in W10-1803

Tipp von NetzwerkDude vor 5 TagenWindows 104 Kommentare

Moin, Remove-AppxProvisionedPackage hat in 1709 recht zuverlässig funktioniert, in 1803 ist es leider so das es gerne mail failed ...

Heiß diskutierte Inhalte
Windows Server
AD User wird immer wieder gesperrt
Frage von YellowcakeWindows Server20 Kommentare

Hey ich habe einen User (ein GL User - Natürlich was denn sonst) der immer wieder gesperrt wird. Ich ...

Windows Netzwerk
Gruppenrichtlinie für einen PC deaktivieren
gelöst Frage von Florian961988Windows Netzwerk14 Kommentare

Hallo, kleines Problem und immoment finde ich dazu keine Lösung oder mir fällt nicht ein, wie ich es suche ...

Debian
Linux debian 9 Installation
Frage von Green14Debian13 Kommentare

Hallo zusammen, ich habe mich ein wenig mit Debian auseinandergesetzt und möchte mir eine Standard-Installation als Grundlage für andere ...

Switche und Hubs
OpenSource oder Freeware zur Verwaltung von Switchen
gelöst Frage von JonskezSwitche und Hubs12 Kommentare

Hallo, gibt eine kostenlose Verwaltungssoftware für Switche (überwiegend HP/Aruba)? Es sollte möglich sein, aus der Ferne z.B. die Firmware ...