Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » HIILLFFEEEE

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
000
19.05.2006, 15:11 Uhr
~Stephi
Gast


Hallo
Ich habe einen Algorithmus geschrieben, der einen String umdreht. Nun soll ich daraus ein Kommandozeilenprogramm entwickeln, das sich mit diesen Parametern steuern lässt. Ich möchte also über die Eingabeaufforderung ein Wort eingeben, welches umgedreht werden soll.
Kann mir vielleicht jemand sagen, wo im folgenden Quelltext der Fehler ist?
Das Problem muss in dr main -Fkt sein..
Ich wúrde hier in das Forum verwisen und hoffe, dass mir jemand helfen kann!
Das Programm ist wirklich wichtig für mich.
Leider bin ich noch nicht so gut, deshlab würde ich mich über ausführliche Antworten freuen.

Bedanke mich schon im v******

Eure Stephi

Code:

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

int StringLaenge(string)
{
   int laenge=0;
   laenge = strlen(string);
   return laenge;

}

char* StringUmdrehen(char string[81],int laenge)
{
    int i;
    int j=0;
    char *pszstring;
    char *psztemp;
    char stringtemp[81];

    strcpy(stringtemp, string);
    pszstring=string;
    psztemp=stringtemp;

    for (i = laenge-1; i >= 0; i--)

    {
    *(pszstring+j)=*(psztemp+i);
    j++;
      
    }
    return stringtemp;
}



int main (int iArg, char *AszArg[])
{
    int iIndex = 0;
    
    


    
    if (iArg<1) return 1;

    while (iIndex<iArg)
    {
    printf("\n%i",iArg);
    
    printf("\n%s",StringUmdrehen(AszArg[iIndex],iArg));

    printf("\n%s",AszArg);

    iIndex++;

    }  


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.05.2006, 15:37 Uhr
kronos
Quotenfisch
(Operator)


So könnte das klappen:

C++:
# include <stdio.h>
# include <string.h>

char* StringUmdrehen(char string[81],int laenge)
{
    int i;
    int j=0;
    char *pszstring;
    char *psztemp;
    char stringtemp[81];

    strcpy(stringtemp, string);
    pszstring=string;
    psztemp=stringtemp;

    for (i = laenge-1; i >= 0; i--)

    {
    *(pszstring+j)=*(psztemp+i);
    j++;
      
    }
    return string; // macht mehr sinn, stringtemp wird ja nicht verändert
}



int main (int iArg, char *AszArg[])
{
    int iIndex = 0;
    
    


    
    if (iArg<1) return 1;

    while (iIndex<iArg)
    {
    printf("\n%i",iArg);
    printf("\n%s",StringUmdrehen(AszArg[iIndex],strlen(AszArg[iIndex]))); // Länge übergeben!

    printf("\n%s",AszArg); // was soll hierbei 'rauskommen, in AszArg stehen Speicheraddressen...

    iIndex++;

    }  




Das erste Element von AszArg zeigt übrigens auf den Programmnamen, wie du bald merken wirst...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 19.05.2006 um 15:38 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.05.2006, 15:54 Uhr
RHBaum



was ich so auf anhieb sehe:

{
char stringtemp[81];
return stringtemp;
}

du erstellst nen locales array of char fuer die funktion ....
gibst nen zeiger drauf zurueck ....

nachdem aber die funktion fertig ist, und dein array local aufn stack der funktion liegt, wird das ding zurueckgespult und dein zeiger zeigt ins nirvana.

char* StringUmdrehen(char string[81],int laenge)

schon allein der prototyp der funktion laesst C entwickler erschauern ....

parameter 1, arrays loest er eh auf als was sie sind, als zeiger auf ....
parameter 2 iss in ordnung, besser ist aber fuer groessenangaben die dafuer vorgesehenen typen zu nehmen. es sei denn man will explizit ungueltigkeitswerte verschieden von 0 haben .... aber das brauchst du doch ned. also besser size_t.
und brauchen tust den eh nich, strings in c sind eh 0 terminiert -> reduntante info !

rueckabewert: char * ? nen zeiger auf was ? was temporaeres geht eh nicht ....
was mit der funktion auf den heap anlegen, zeiger zurueckgeben, und hoffen das der anwender es loescht, dazu ne doku mit 1000 Ausrufezeichen schreiben -> ganz schlechter Stil !

und warum auch ... dein parameter 1 ist doch nich const, also schreib direkt drauf !

besserer prototyp waere:
int StringUmdrehen(char * mystring);
den rueckabewert als fehlernummer/erfolgsmeldung verwenden.

falls du den organialstring nicht anfassen willst darfst, musst ihn aufm buffer schreiben lassen, den auserhalb der funktion natuerlich anlegen laesst:

int StringUmdrehen(const char * input, char * output,size_t * output_size);

outputsize beim vorm aufrufen wird mit der groesse von output als buffer belegt, nach der funktion koenntest da reinschreiben wieviel zeichen du in output geschrieben hasst, iss aber unnoetig, weil das koenntest in den rueckabewert packen oder die laenge von autput (suche nach termination) selber checken ....

Hoffe das war bisserl verstaendlich ! ^^

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.05.2006, 19:21 Uhr
~Stephi
Gast


Klappt! Ihr gebt euch aber echt Mühe! Vielleicht meld ich mich nochmal Hab hin und wieder mal ne Frage.. Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.05.2006, 19:22 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Vorher bitte ein aussagekräftiges Foto posten
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.05.2006, 19:33 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von Windalf:
Vorher bitte ein aussagekräftiges Foto posten

Du gibst es nicht auf,was?
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.05.2006, 19:56 Uhr
Spacelord
Hoffnungsloser Fall


Hey Windalf,
wäre diese entzückende junge Dame nichts für dich?


Gruss Spacelord

--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.05.2006, 20:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Spacelord
Hat sich die entzückende Dame in der Kugel versteckt.. Ich kann die einfach nicht finden


Zitat:

Du gibst es nicht auf,was?


Stumpf ist Trumpf Hat bei meinen Gehaltsverhandlungen auch funktioniert...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.05.2006, 21:33 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von Windalf:
@Spacelord
Hat sich die entzückende Dame in der Kugel versteckt.. Ich kann die einfach nicht finden


Du bist auch mit nichts zufrieden zu stellen .
Ich hätte dir so gerne zu einem Date mit Anna Bolika verholfen.
Wer weiß wozu die nach nem Tässchen Testosteron fähig ist .
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
20.05.2006, 10:40 Uhr
~Stephi
Gast


Kann man denn hier irgendwo nachlesen, wie man bei einem C++-Programm, das mehrere Funktionaltäten besitzt, parametergesteuert einzelne Funktionalitäten ausführen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: