C: Array - String Problem

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Adabi
Beiträge: 5
Registriert: Mi Dez 11, 2013 6:56 pm

C: Array - String Problem

Beitrag von Adabi » Mi Dez 11, 2013 8:23 pm

Hallo
Ich hatte vor Urzeiten mal programmiert und jetzt just for fun wieder angefangen und mich für C entschieden und das Tutorial hier gefunden. Ich benutze dazu Codeblocks mit OpenMP. Leider tue ich mich noch etwas schwer mit der Syntax.

Ich habe ein Array initalisiert und möchte nun daraus einzelne Zeichen zu einem String zusammensetzen bzw. übergeben. Nach viel Gefummel habe ich nun untere Lösung dazu.
Geht das nicht auch weniger umständlich? Wenn ich das mit Kombinationen aus mehr als nur den vier Zeichen bauen will, kann ich ja an der Schleifenkonstruktion einen Flugzeugträger aufhängen.

Grüsse
A.

Code: Alles auswählen

#include <stdio.h>

int main (void)
{

char kombi[5] = "";
char zeichen[5] = {'N', 'S', 'O', 'W', '\0'};

printf("Kombi alt: %s\n\n", &kombi);

kombi[0] = zeichen[0];
kombi[1] = zeichen[1];

printf("Kombi neu: %s", &kombi);

return 0;
}


Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: C: Array - String Problem

Beitrag von cloidnerux » Mi Dez 11, 2013 8:37 pm

Nabend und Willkommen im Forum :D
Geht das nicht auch weniger umständlich?
Die Frage ist eher, was du erreichen möchtest.

Code: Alles auswählen

kombi[0] = zeichen[0];
kombi[1] = zeichen[1];
Wenn du nur Array 1 in Array 2 kopieren willst, gibt es dafür sogar Funktionen wie memcpy. Ansonsten wäre das eine Schleife.

Ansonsten wirst du wohl kaum drum herum kommen, mehr als 10 Zeilen Code zu schreiben.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Adabi
Beiträge: 5
Registriert: Mi Dez 11, 2013 6:56 pm

Re: C: Array - String Problem

Beitrag von Adabi » Mi Dez 11, 2013 10:15 pm

Dank dir erstmal für die rasche Antwort.
Was ich erreichen möchte ist, dass ich aus ausgewählten Daten des Array einen String zusammensetzen kann.
Als Bsp. im Array stehen die Chars A bis Z. Dann will ich daraus das Wort "Europa" bauen und es einem anderen String übergeben. Irgendwie hatte ich gedacht, ich könnte das mit einem leeren String machen und dann mit einer Art "append"-Befehl die Buchstaben nacheinander anhängen.
Ansonsten wirst du wohl kaum drum herum kommen, mehr als 10 Zeilen Code zu schreiben.
Bin ja auch erst am Anfang und damit ich mich nicht selbst mehr als nötig verwirre, versuche ich erstmal kleine Teile umzusetzen um zu sehen, ob das funktioniert.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: C: Array - String Problem

Beitrag von cloidnerux » Mi Dez 11, 2013 10:51 pm

Was ich erreichen möchte ist, dass ich aus ausgewählten Daten des Array einen String zusammensetzen kann.
Als Bsp. im Array stehen die Chars A bis Z. Dann will ich daraus das Wort "Europa" bauen und es einem anderen String übergeben. Irgendwie hatte ich gedacht, ich könnte das mit einem leeren String machen und dann mit einer Art "append"-Befehl die Buchstaben nacheinander anhängen.
Die Frage die sich mir gerade stellt ist, warum du überhaupt Strings aus einzelnen Buchstaben zusammenbasteln willst?
Welchen Nutzten versuchst du daraus zu ziehen?

Ansonsten kannst du mit Pointer spielen. Wenn du genug Speicher reserviert hast, kannst du einfach mit einem Pointer inkrementieren und so die direkte Indexierung umgehen.
aber wie schon erwähnt, warum aus den Buchstaben einen Text bauen, wenn du ihn auch einfach direkt eingeben kannst?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Adabi
Beiträge: 5
Registriert: Mi Dez 11, 2013 6:56 pm

Re: C: Array - String Problem

Beitrag von Adabi » Do Dez 12, 2013 12:52 am

Na ja, eigentlich um mir das ein bisschen beizubringen, was ich unter "Stringmanipulation" verstehe. Ich schreibe kleine Programme um zu testen, ob sie mit Strings/Variablen das tun was ich mir vorstelle. Zugegeben bis zum Thema "Pointer" bin ich noch nicht gekommen, aber das werde ich mir mal näher ansehen.
Sonstiger Nutzen? Ach, ich habe die Idee einer Scrabble-Hilfe im Kopf oder ein Programm wo ich meinen Angehörigen zeigen kann, wie schnell moderne PCs Passwörter basteln können um sie dafür etwas zu sensibilisieren.
Aber im Moment stelle ich mich mit C so blöde an, das ich mich frage, ob ich nicht irgendein BASIC oder Pascal hätte nehmen sollen. Aber wahrscheinlich wäre mir das wieder zu langsam.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C: Array - String Problem

Beitrag von Xin » Do Dez 12, 2013 10:08 am

Adabi hat geschrieben:Na ja, eigentlich um mir das ein bisschen beizubringen, was ich unter "Stringmanipulation" verstehe. Ich schreibe kleine Programme um zu testen, ob sie mit Strings/Variablen das tun was ich mir vorstelle. Zugegeben bis zum Thema "Pointer" bin ich noch nicht gekommen, aber das werde ich mir mal näher ansehen.
Stringmanipulation ist viel Arbeiten mit Arrays und Pointern und eigentlich auch wunderbar dafür geeignet, um Übung mit Pointern zu erlangen.
Adabi hat geschrieben:Sonstiger Nutzen? Ach, ich habe die Idee einer Scrabble-Hilfe im Kopf oder ein Programm wo ich meinen Angehörigen zeigen kann, wie schnell moderne PCs Passwörter basteln können um sie dafür etwas zu sensibilisieren.
Für die Passwörter einfach blind auf die Tastatur hacken und zwischenzeitlich schonmal Shift drücken ;-)
Adabi hat geschrieben:Aber im Moment stelle ich mich mit C so blöde an, das ich mich frage, ob ich nicht irgendein BASIC oder Pascal hätte nehmen sollen. Aber wahrscheinlich wäre mir das wieder zu langsam.
Gute Basics oder Pascal sind nicht (viel) langsamer als C.
"Gut" und "Basic" geht aber schonmal nicht zusammen und Pascal ist schlussendlich auch nichts anderes als C in Prosa-Form, wo Du Dich genauso "blöd" anstellen würdest.

Das Problem ist nicht, dass Du Dich blöd anstellst, sondern dass Du etwas lernst und wenn Du einem zweijährigen beim Laufen zu guckst, dann ist das kein Intelligenzproblem, sondern ein Mangel an Erfahrung.

Was das zusammenfrickeln von Strings angeht, kannst Du dir auch eine struct anlegen, die ein Zeiger auf das Array und die Position beeinhaltet. Zusätzlich schreibst Du Dir Funktionen, die diese Struktur bearbeiten und ihr entweder ganze Strings oder einzelne Zeichen hinzufügen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Adabi
Beiträge: 5
Registriert: Mi Dez 11, 2013 6:56 pm

Re: C: Array - String Problem

Beitrag von Adabi » Do Dez 12, 2013 9:21 pm

Für die Passwörter einfach blind auf die Tastatur hacken und zwischenzeitlich schonmal Shift drücken ;-)
Da müsste ich schon meine eigene Tastatur mitnehmen - die haben alle nur Rubberdome. :mrgreen:
Ich dachte mir irgendwas visuelles, wo die Anzahl der Passwörter hochgezählt werden macht da mehr Eindruck als die Vorzüge einer Cherry-Klick-Tastatur.
Pascal ist schlussendlich auch nichts anderes als C in Prosa-Form
Ich habe unheimlich Schwierigkeiten damit mir meinen Belletristik-Programmierstil abzugewöhnen, hehe

Ich schaue mir auch Programmierbeispiele in C an und versuche sie zu verstehen. Gerade da merke ich, dass mir die Erfahrung fehlt um die einzelnen Schritte nachzuvollziehen. Selbst dann, wenn sie kommentiert sind. Ich möchte es zumindest verstehen, bevor ich mich daran orientiere (der Euphemismus für Kopieren). Natürlich kann ich irgendein hässliches Programm zur Passwortdemo runterschreiben und merken würde das auch keiner. Nur vorgestern habe ich mir einen Brute Force Code angesehen und der war völlig anders als das was ich programmieren könnte. Jetzt versuche ich das Teil zu verstehen.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: C: Array - String Problem

Beitrag von Xin » Do Dez 12, 2013 10:10 pm

Adabi hat geschrieben:
Pascal ist schlussendlich auch nichts anderes als C in Prosa-Form
Ich habe unheimlich Schwierigkeiten damit mir meinen Belletristik-Programmierstil abzugewöhnen, hehe
C zu programmieren bedeutet nicht alle so kryptisch wie möglich auszudrücken...
Beschreibe, was Du tust - also kommentiere. Dann verstehst Du auch besser.
Adabi hat geschrieben:Ich schaue mir auch Programmierbeispiele in C an und versuche sie zu verstehen. Gerade da merke ich, dass mir die Erfahrung fehlt um die einzelnen Schritte nachzuvollziehen. Selbst dann, wenn sie kommentiert sind. Ich möchte es zumindest verstehen, bevor ich mich daran orientiere (der Euphemismus für Kopieren). Natürlich kann ich irgendein hässliches Programm zur Passwortdemo runterschreiben und merken würde das auch keiner.
Dann mach das, kommentiere es und optimiere es, bis es nicht mehr hässlich ist.
Adabi hat geschrieben:Nur vorgestern habe ich mir einen Brute Force Code angesehen und der war völlig anders als das was ich programmieren könnte. Jetzt versuche ich das Teil zu verstehen.
Da spricht nichts gegen. Man lernt auch von anderen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten