[C] Einem zweidimensionales array eine Variable zuweisen

pete111

Gesperrt
Hey,
ich muss gerade mit einen zweidimensionales array arbeiten. Ich muss eigentlich nur einen zweidimensionales char array einen bzw. mehrere strings zuweisen können. Das klappt leider nicht so wie ich es mir vorstelle.
Hier mal ein einfaches Beispiel, vllt kann mir ja jemand erklären worauf ich achten muss...

Code:
    char string[2][8];
    char string2[] = "TEst1";
    char string3[] = "test2";

    string[0][8] = string2;
    string[1][8] = string3;

    printf("Ausgabe: %c \n", string[0][2]);

Die Ausgabe sieht dann so aus:

Ich hoffe ihr könnt mir das alles ein bisschen näher bringen...
 
Hi und Willkommen bei tutorials.de,

Zum Kopieren von Strings wird kein = verwendet, sondern die Funktion strcpy (string-copy).

string[0][8] wäre nur ein Buchstabe, kein ganzer String.
string[0] ist ein Ganzer.
Außerdem gibt es string[0][8] nicht, die zweite Zahl geht bei 8 Stück nur von 0 bis 7.
0-1-2-3-4-5-6-7 sind genau 8.

Und %c beim printf ist auch nur für Einzelbuchstaben gedacht.
Nimm %s.

Gruß
 
Was sheel schreibt würde in Quellcode dann so aussehen :)

C++:
#ifndef MAIN_H
#define MAIN_H

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    char string[2][8];
    char string2[] = "TEst1";
    char string3[] = "test2";

	// Du solltest natürlich darauf achten, dass die einzelnen strings nicht länger
	// als 7 Zeichen sind, da dann kein platz mehr für die NULL-Terminierung da ist
	// Im schlimmsten Fall kann es zum Absturz kommen z.B. bei printf()

	// Zur Sicherheit die Länge abfangen
	// strlen() gibt die Länge eines NULL-terminierten Strings zurück
	if(strlen(string2) > 7) {
		printf("string2 länger als 7 Zeichen!\n");
	}
	else if(strlen(string3) > 7) {
		printf("string3 länger als 7 Zeichen!\n");
	}
	else {
		strcpy(string[0], string2);
		strcpy(string[1], string3);

		printf("Ausgabe 1: %s \n", string[0]);
		printf("Ausgabe 2: %s \n", string[1]);
	}

	system("pause");
	return 0;
}

#endif

MfG Manuel

PS.: http://www.cplusplus.com ist ne gute Anlaufstelle für C/C++ Funktionen
 
Zuletzt bearbeitet von einem Moderator:
Korrektur:
C++:
printf("Ausgabe 1: %s \n", string[0]);
printf("Ausgabe 2: %s \n", string[1]);
Ohne &

Aber pete wird wohl nicht mehr antworten.
Eine Frage reinhaun und dann nie wieder kommen...sehr sinnvoll.
 
Zurück