Problem mit Strings oder Arrays
-
Also steinigt mich, aber ich bin einfach ein Anfänger...
Der folgende Code soll einfach str2 ausgeben, das ist nichts anderes wie str, nur umgedreht!
Er gibt mir aber nichts aus...#include <stdio.h> #include <string.h> #include <stdlib.h> void drehum(char s[], char s2[]); int main(){ char str[]="Das ist das Haus vom Nikolaus und du kannst mich mal!"; char str2[]=""; printf("Strlen von s =%d\n\n", strlen(str)); drehum(str, str2); printf("DER STRING: %s\n\n", str2); return 0; } void drehum(char s[], char s2[]){ s2=(char*)malloc(sizeof(char)*strlen(s)); //Speicher initialisieren für den zu kopierenden String if(s2==NULL) { exit(1); } unsigned int i; unsigned int j; for(i=0,j=(strlen(s)-1); i<strlen(s),j>=0 ;i++,j--) { s2[i]=s[j]; //Sorgt dafür dass der s in s2 kopiert wird, in umgekehrter Reihenfolge. if(s[i+1]=='\0') //Falls bei s[i+1] auf die absoulte 0 gestoßen wird, { s2[i+1]='\0'; //dann hängen wir die absolute 0 auch an das Ende von s2 break; // Schleife wird beendet! } } }
Versuch ich aber s2 in der Methode auszugeben, dann funktionierts!
Danke für eure Mühe.
-
Das "...du kannst mich mal am Ende!" hab ich geschrieben, als ich total verzweifelt war!
Ist aber an niemanden gerichtet! Also nochmal sorry! ^^
-
Wir sind hier im C++-Bereich.
Entweder du bittest darum, dass es in den C-Bereich verschoben wird, oder du nutzt std::string und dessen Operatoren
-
Du übergibst der Funktion einen char-Zeiger und weist diesem dann lokal neuen Speicher zu. Der Originalzeiger zeigt dann immer noch auf "".
-
Ohh man, jetzt seh ichs auch...
Dankeschön!!!
-
Aber jetzt hab ich das Problem, dass ich ausserhalb der Funktion(in der main Funk), den Speicher reservieren muss für str2...
Aber es wäre doch viel effektiver den Speicher in der Funktion zu reservieren!
Meine Frage: Wie denn?
Wenn ich einen Zeiger übergebe, dann wird nur lokaler Speicher reserviert...Ach ja: Bitte in C Thread verschieben!
-
Wenn du es für besser hältst, den Speicher in der Funktion zu reservieren, könntest du Zeiger auf Zeiger benutzen (also char** ).
-
wolltest du wirklich ins C++ Forum? Oder doch ins C Forum? In C++ gibts nämlich sowas wie string, cout und new.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.