Zum Inhalt springen

Ohne Bibliotheksfunktionen Arrays kopieren und Laenge ermitteln


Trex88

Empfohlene Beiträge

Liebe Fachinformatiker.de-Community,

ich stehe vor einem kleinen Problem in C. Ich muss fuer die Uni eine Aufgabe loesen, die fuer mich nicht ganz einfach ist, da sowohl C als auch sein Handling mit Pointern fuer mich neu sind.

Einfachheitshalber poste ich die Aufgabestellung mit. Ich erwarte keine Komplettloesungen - Hinweise waeren ausreichend.

Aufgabe 1: Programmieren in C (Schwierigkeitsgrad: mittel)


Schreiben Sie einige Funktionen zur Manipulation von Strings. Die 

Funktionen sollen in eine seperate Datei "stringFunctions.c" geschrieben 

werden und die Funktionskoepfe in eine Datei "stringFunctions.h". Das 

ausfuehrbare Modul erzeugen Sie mit "make".


* Die Laenge einer Zeichenfolge feststellen. Deklarieren Sie die Funktion 

"int laenge_arrayschreibweise(char x[])". Greifen Sie auf die Zeichen 

des Strings mit Hilfe der Arrayindizierung zu. Hinweis: Benutzen Sie 

keine Bibliotheksfunktionen wie z.B. length o.ae.


* Die Laenge einer Zeichenfolge feststellen. Deklarieren Sie die Funktion 

"int laenge_pointerschreibweise(char *x)". Greifen Sie auf die Zeichen 

des Strings mit Hilfe von Pointern zu. Hinweis: Benutzen Sie keine 

Bibliotheksfunktionen wie z.B. length o.ae.


* Schreiben Sie eine Prozedur "copy_arrayschreibweise(char x[], char 

y[])", die einen String als Eingabeparameter hat und den kopierten 

String ueber den Ausgabeparameter zurueckgiebt. Zur Loesung der Aufgabe 

benutzen Sie bitte die Schreibeise fuer Arrays.


* Schreiben Sie eine Prozedur "copy_pointerschreibweise(char *x, char 

*y)", die einen String als Eingabeparameter hat und den kopierten String 

ueber den Ausgabeparameter zurueckgiebt. Zur Loesung der Aufgabe benutzen Sie bitte die Schreibweise fuer Pointer.


Das Hauptprogramm "stringMain.c" kopieren Sie sich bitte aus dem 

Verzeichnis "/usr/local/praktikum/Algorithmen/P8" und erstellen die im 

Hauptprogramm vorgegebenen Funktionen in der Datei "stringFunctions.c".
Makefile stellt für mich kein Problem her. Die Header-Dateien sind auch korrekt und der Kompiliervorgang funktioniert auch. Nur die Funktionen funktionieren noch nicht richtig. Das ist mein bisheriger Code:
#include "stringFunctions.h"


int laenge_arrayschreibweise (char x[])

{

    int i, l = 0;

    for (i = 0; &x[i] != ""; i++)

        l++;

    return l;

}


int laenge_pointerschreibweise (char *x)

{

    int i, l = 0;

    for (i = 0; &x[i] != ""; i++)

        l++;

    return l;

}


int copy_arrayschreibweise (char x[], char y[])

{

    int i;

    for (i = 0; &x[i] != ""; i++)

        y[i] = x[i];

}


int copy_pointerschreibweise (char *x, char *y)

{

    int i;

    for (i = 0; &x[i] != ""; i++)

        y[i] = x[i];

}

Alleine die erste Funktion scheitert schon daran, dass es eine Endlosschleife ist. Allerdings habe ich keine andere Idee, die Laenge eines Arrays so ganz ohne Bibliotheksfunktionen zu ermitteln.

Die anderen Funktionen funktionieren ebenfalls nicht.

Für Hilfestellungen, Lösungsansätze o.ä. wäre ich sehr dankbar!

Gruß,

Trex

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo lilith2k3,

danke für deine Antwort!

Frage: Wie ist eine Zeichenkette terminiert? Antwort? Oh, dann liegt die Funktion ja auf der Hand.

Es ging ja eben darum, die Aufgabe völlig ohne Bibliotheksfunktionen zu lösen.

Das ist Kindergarten ... Und sowas macht Ihr in der Uni? :D

Vielleicht sollte ich ja doch nochmal studieren *g*

Da widerspreche ich dir nicht. Allerdings macht man manchmal auch in einer für einem selbst geläufigen Programmiersprache "offensichtliche" Fehler, die man dann - aufgrund derer eigentlichen Offensichtlichkeit - leicht übersieht. In meinem Fall waren es auch nur ein paar Zeichen. xD

Und ein Informatikstudium ist für erfahrene bzw. stark interessierte Programmierer, die schon vorher sehr viel mit Computern zu tun hatten, eigentlich kein Problem. Nur die Mathematik macht viele zu schaffen.

Besorg Dir eine Ausgabe von Kernighan & Ritchies fantastischem C-Buch!

Danke, ich werde das Buch ggf. zur Hand nehmen.

--------

Das Problem ist gelöst. Ich habe den gleichen Post auf gulli gepostet, da dieser Server sehr stark überlastet war und ich eine zeitnahe Antwort brauchte. Verzeiht mir! ^^

Hier die Lösung - für den seltenen Fall, dass andere ähnliche Probleme haben sollten:

#include "stringFunctions.h"


int laenge_arrayschreibweise (char x[])

{

    int i, l = 0;

    for (i = 0; x[i] != '\0'; i++)

        l++;

    return l;

}


int laenge_pointerschreibweise (char *x)

{

    int i, l = 0;

    while (*x++ != '\0')

        l++;

    return l;

}


int copy_arrayschreibweise (char x[], char y[])

{

    int i;

    for (i = 0; x[i] != '\0'; i++)

        y[i] = x[i];

}


int copy_pointerschreibweise (char *x, char *y)

{

    int i;

    while (*x != '\0')

        *y++ = *x++;

}

Gruß,

Trex

Bearbeitet von Trex88
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...