Hilfe: String Umkehrfunktion, gets(), ...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe: String Umkehrfunktion, gets(), ...

    Ich habe folgendes Programm programmiert. Mein Problem ist bei der Unterfunktion "Abfrage". Ich soll String mit der gets()-Fkt. einlesen. Hab aber ehrlich gesagt keine Ahnung, wie das fkt.
    Ausserdem möchte ich in der main-Fkt die Werte für ein Array "einlesen". Der Operator = fkt aber nicht bei Arrays(Fehlermeldung L-Wert). Wie kann ich das umgehen?

    Vielleicht kann mir jemand helfen! Wäre ich sehr dankbar drüber..



    Quellcode

    1. # include <stdio.h>
    2. # include <string.h>
    3. # define ANZAHL 20
    4. char* Abfrage(int arg)
    5. {
    6. char AszString;
    7. gets(AszString);
    8. return AszString;
    9. }
    10. char* StringUmdrehen(char *szEingabeString)
    11. {
    12. int i;
    13. int j=0;
    14. char *pszstring;
    15. char *psztemp;
    16. char stringtemp[81];
    17. int laenge = strlen(szEingabeString);
    18. strcpy(stringtemp, szEingabeString);
    19. pszstring=szEingabeString;
    20. psztemp=stringtemp;
    21. for (i = laenge-1; i >= 0; i--)
    22. {
    23. *(pszstring+j)=*(psztemp+i);
    24. j++;
    25. }
    26. return szEingabeString;
    27. }
    28. int main(int arg, char *szString[])
    29. {
    30. char szAbfrage[ANZAHL+1][81];
    31. if(arg > 1)
    32. {
    33. if(strcmp(szString[1],"-u")==0)
    34. szAbfrage=Abfrage();
    35. printf("\n%s",StringUmdrehen(szAbfrage));
    36. else if(strcmp(szString[1],"-l")==0)
    37. printf("Und tschuess");
    38. else
    39. printf("Unbekannter Parameter\n");
    40. }
    41. else
    42. printf("kein Argument uebergeben\n");
    43. return 0;
    44. }
    Alles anzeigen




    Und nochmal die einzelnen Probleme:

    Quellcode

    1. char* Abfrage(int arg)
    2. {
    3. char AszString;
    4. gets(AszString);
    5. return AszString;
    6. }


    und..

    Quellcode

    1. szAbfrage=Abfrage();
  • Müsst ihr denn unbedingt ein char Array als String-Ersatz benutzen?
    Schließlich bindest du die string.h bereits ein?
    Hier mal eine kompaktere String Umkehrfunktion.

    Quellcode

    1. #include <string.h>
    2. #include <stdio.h>
    3. string var = StringUmdrehen("wert");
    4. string StringUmdrehen(string EingabeString)
    5. {
    6. if(EingabeString.length() == 0)
    7. return EingabeString;
    8. return StringUmdrehen(EingabeString.substr(1,input.length)) + EingabeString[0];
    9. }


    falls ihr doch bei Char[] bleiben müsst, dann schreibt dir einfach noch eine Funktion für um den ersten Buchstaben eines Strings abzuschneiden

    würde dir außerdem den Einsatz von fgets() statt gets() anraten

    hier ein beispielcode von http://wwwuser.gwdg.de/~kboehm/ebook/17_kap13_w6.html#251913
    #include <stdio.h>
    #define MAXLAEN 10

    Quellcode

    1. int main(void)
    2. {
    3. char puffer[MAXLAEN];
    4. puts("Geben Sie ganze Textzeilen ein. Ende mit Eingabetaste.");
    5. while(true)
    6. {
    7. fgets(puffer, MAXLAEN, stdin);
    8. if (puffer[0] == '\n')
    9. break;
    10. puts(puffer);
    11. }
    12. return 0;
    13. }
    Alles anzeigen
  • Ich bin leider ziemlich in den Mitteln durch die Aufgabenstellung eingeschränkt!
    Die groben Rahmenbedingungen sind:Es soll Parameter kennen, die über der cmd eingelesen werden
    mit gets() in ein string feld char szAbfrage[Anzahl+1][81] werte speichern dann die eingelesenen Wörter
    a) umdrehen
    b)die Länge der Wörter zählen
    c) die Wörter alphabetisch sortieren.

    das folgende Programm habe ich bisher geschrieben! Leider habe ich ein paar Probleme

    1) Wie soll ich dem Programm sagen, dass er bei einem leerem String also ASCII '13' die Eingabe über gets () abbricht

    2) Irgendwie scheint in diesem Teil Code:

    Quellcode

    1. for (j=1; j<ANZAHL ; j++)
    2. {
    3. szAbfrage[j][81]=Abfrage(j);
    4. }

    was nicht zu klappen, denn ich kann das eingegebene Feld erst gar nicht ausgeben lassen bekomme da immer ne Fehlermeldung!
    Geht auch nicht über ne doppelte for schleife!


    Quellcode

    1. # include <stdio.h>
    2. # include <string.h>
    3. # include <conio.h>
    4. # define ANZAHL 4
    5. char* Abfrage()
    6. {
    7. char AszString[81];
    8. gets(AszString);
    9. return AszString;
    10. }
    11. char* StringUmdrehen(char *szEingabeString)
    12. {
    13. int i;
    14. int j=0;
    15. char *pszstring;
    16. char *psztemp;
    17. char stringtemp[81];
    18. int laenge = strlen(szEingabeString);
    19. strcpy(stringtemp, szEingabeString);
    20. pszstring=szEingabeString;
    21. psztemp=stringtemp;
    22. for (i = laenge-1; i >= 0; i--)
    23. {
    24. *(pszstring+j)=*(psztemp+i);
    25. j++;
    26. }
    27. return szEingabeString;
    28. }
    29. int main(int arg, char *szString[])
    30. {
    31. char szAbfrage[ANZAHL+1][81];
    32. int i=0, j=0;
    33. if(arg > 1)
    34. {
    35. if(strcmp(szString[1],"-u")==0)
    36. {
    37. for (j=1; j<ANZAHL ; j++)
    38. {
    39. szAbfrage[j][81]=Abfrage(j);
    40. }
    41. }
    42. else if(strcmp(szString[1],"-l")==0)
    43. printf("Und tschuess");
    44. else
    45. printf("Unbekannter Parameter\n");
    46. }
    47. else
    48. printf("kein Argument uebergeben\n");
    49. return 0;
    50. }
    Alles anzeigen