Alex_winf01 Geschrieben 13. August 2008 Teilen Geschrieben 13. August 2008 Hallo liebe Forengemeinde, ich habe zwei kleine Problemchen: 1.) ich brauche einen Teilstring von einem Gesamtstring. Beispiel: ZEXXX.YY Hier brauche ich den Teilstring ZEXXX. Wie kann ich den auslesen? 2.) folgender String: ZEXXX.YY. Dieser soll umgewandelt werden in ZEXXXYY. Mit welcher Methode kann ich das realisieren? Beides in Programmiersprache C. Danke für die Hilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
brandyandy Geschrieben 13. August 2008 Teilen Geschrieben 13. August 2008 Also ich kenne von C nur folgende Stringfunktionen: strlen(),strcat(),strcpy(),strcomp() die helfen da jez nicht direkt weiter. Mit SQL würd das ganz bequem mit substring funktionieren. Jez wäre mal die Frage ob der String immer gleich lang ist und die Punkte immer an der selben Stelle wie in deinem Beispiel: ZEXXX.YY. Dann wäre es wohl am besten ein Array anzulegen in den du den string speicherst und dann mit einer for Schleife Zeichen für Zeichen den String auslesen bis der Punkt kommt und dann den Punkt durch die binäre Null ersetzen. /0 (Diese Zeigt das Ende eines Strings an alles was danach kommt wird abgeschnitten) for (i=0; i<8;i++) { if (string[i]=='.') { string[i]='\0' ; } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 13. August 2008 Autor Teilen Geschrieben 13. August 2008 Also, es kann entweder nur ZEXXX auftreten oder ZEXXX.YY Ich muss da was zusammenbasteln. Aus ZEXXX muss 76ZEXXX werden und aus ZEXXX.YY muss 76ZEXXXYY werden. Kannst Du mir da weiterhelfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 13. August 2008 Teilen Geschrieben 13. August 2008 Also, es kann entweder nur ZEXXX auftreten oder ZEXXX.YY Ich muss da was zusammenbasteln. Aus ZEXXX muss 76ZEXXX werden und aus ZEXXX.YY muss 76ZEXXXYY werden. Wie schon geschrieben wurde: Du kannst per Schleife die Eigabe zeichenweise durchlaufen und in einen Ausgabepuffer das gewünschte Ergebnis hineinschreiben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 13. August 2008 Autor Teilen Geschrieben 13. August 2008 @ Bubble könntest Du das in einem Codebeispiel nochmal erläutern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 14. August 2008 Teilen Geschrieben 14. August 2008 (bearbeitet) substr + find Edit: oops, grad erst gelesen, dass c. strstr Bearbeitet 14. August 2008 von TDM Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
brandyandy Geschrieben 14. August 2008 Teilen Geschrieben 14. August 2008 So, ich hab hierfür jez mal ein 5min Programm geschrieben und die Funktion strstr benutzt die ich bis dato nicht kannte. Es funktioniert mit den Zeichen die du beschrieben hast ob es dir was bringt ist natürlich ne andere frage. #include<stdio.h> #include<conio.h> #include<string.h> int main() { char zeichen[]="ZEXXX"; char anfang[]="76"; char * substring; if (strlen(zeichen)==5) { strcat(anfang,zeichen); puts(anfang); } else if (strlen(zeichen)==8) { substring= strstr (zeichen,"."); strncpy(substring,"YY",5); strcat(anfang,zeichen); puts(anfang); } else { } getch(); return 0; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 16. August 2008 Autor Teilen Geschrieben 16. August 2008 (bearbeitet) @ brandyandy ich habe bereits (leider im falschen Thread) weiter geschrieben. Ich habe nun folgendes Problem: Ich lese Werte aus einer csv-Datei aus (Datei1.csv) und muss die Werte überarbeitet wieder in eine neue Datei (Datei2.csv) reinschreiben. Die Werte aus der 1. Datei sehen wie folgt aus: ZE01.01;beschreibung ZE02;beschreibung1 ZE13.13;beschreibung In der neuen Datei soll dann stehen: 760101;beschreibung 760200;beschreibung1 Nun habe ich mit der Umsetzung Deines Codes Probleme. Hier der Link zum anderen Thread: http://forum.fachinformatiker.de/c-c/118517-frage-zur-handhabung-dateien-2.html @ brandyandy Wie würdest Du das umsetzen? Um mein Problem genauer zu beschreiben: Dein Code habe ich nachvollziehen können. Nun habe ich nur das Problem, ich lese die Werte aus einer Datei aus und da muss ich nur die ersten Werte umwandeln. @ admin ich weiss, das ist Doppelposting. Ich gelobe Besserung. Bearbeitet 16. August 2008 von Alex_winf01 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 22. August 2008 Autor Teilen Geschrieben 22. August 2008 @ all vielen Dank schon mal für eure Hilfe. Ich bin nun ein Schritt weiter (was die Theorie und mein Programm angeht). Mein Code sieht wie folgt aus: #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { FILE *datei = fopen("Datei1.csv", "r"); FILE *datei_neu = fopen("Datei2.csv", "w+"); char line [1000]; int i; char ch; char *sep; if(datei_neu == NULL) { printf("Fehler"); } if (datei != NULL) { while (fgets(line, sizeof line, datei)) { // Dieser Bereich kümmert sich darum, dass der Punkt übersprungen wird int c, i, j; char erg[10]; for(i=0, j=strlen(line)-1; i < j;i++, j--) { if (line[i]=='.') { line[i]='\0' ; } } fputs("76", datei_neu); fputs(line, datei_neu); } } else { printf("Fehler"); } fclose(datei); fclose(datei_neu); return 0; } Nun habe ich das Problem, dass in der 1. Datei folgendes steht: ZE01.01;ZE01.01;89-563;Beschreibung Text1; ZE02;zE02;555-89;Beschreibung Text2; Der erste String soll nun so umformatiert werden: 76ZE0101. Der zweite nicht. Ich vermute mal, ich muss line in Teilstrings zerlegen, array[0] umformatieren und dann array[] in datei_neu speichern muss, oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 23. August 2008 Autor Teilen Geschrieben 23. August 2008 Kann mir keiner weiterhelfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 23. August 2008 Teilen Geschrieben 23. August 2008 Kann mir keiner weiterhelfen? Bitte kein Threadpushing, siehe Boardregeln. Am Wochenende ist hier nunmal nicht ganz so viel los. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 23. August 2008 Autor Teilen Geschrieben 23. August 2008 @ Klotzkopp Danke für den Hinweis. Ich brauch nun mal Hilfe. Kannst du mir nicht weiterhelfen? Würdest Du notfalls über PN mir weiterhelfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 23. August 2008 Teilen Geschrieben 23. August 2008 Wofür brauchst Du das Programm/die Funktion eigentlich? Ist es eine reine Übungsaufgabe? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 24. August 2008 Autor Teilen Geschrieben 24. August 2008 @ Bubble keine Übung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 24. August 2008 Teilen Geschrieben 24. August 2008 keine Übung. Was dann? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alex_winf01 Geschrieben 24. August 2008 Autor Teilen Geschrieben 24. August 2008 Ich muss für mein Unternehmen eine vorhandene Datei so umformatieren, damit diese in die bereits vorhandene Oracle-Datenbank eingelesen werden kann. Aber was hat diese Frage bette schön mit meinem Problem zu tun? - Nichts.:floet: Könnten wir wieder zu meinem Problem kommen? Ansonsten kann man die ganze Diskussion abhacken. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 24. August 2008 Teilen Geschrieben 24. August 2008 Aber was hat diese Frage bette schön mit meinem Problem zu tun? - Nichts.:floet: Mit dem Problem an sich hat es nichts zu tun, aber damit, in welchem Zusammenhang die Frage steht. Wäre es eine Übungsaufgabe, würde ich vermutlich helfen, einen geeigenten Lösungsweg zu finden und ihn umzusetzen, auch wenn es einige Beiträge lang dauert. Es ist nicht gegen Dich gerichtet, aber ich sehe keinen besonderen Grund, warum ich einem mir unbekannten Unternehmen auf Zuruf ohne Gegenleistung Arbeit abnehmen sollte, indem ich einfach eine fertig einsatzfähige Lösung präsentiere. Ich hoffe, Du verstehst das. Es gibt auch andere Programmiersprachen, in denen solche Stringverarbeitungen relativ leicht umgesetzt werden können. Dein Ansatz, die Eingabe in Teilstrings zu zerlegen und dann entsprechend des gewünschten Ergebnisses zusammenzusetzen, ist richtig, man kann es so umsetzen. Du könntest den String aber auch ohne vorhergehende Zerlegung zeichenweise kopieren und dabei in die gewünschte Form zusammensetzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.