Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Länge einer Zeichenkette in C ermitteln
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Länge einer Zeichenkette in C ermitteln
 
Autor Nachricht
physie
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 11.03.2006
Beiträge: 71

BeitragVerfasst am: 21 März 2008 - 17:17:04    Titel: Länge einer Zeichenkette in C ermitteln

Hallo!

Kann mir jemand bei folgender Aufgabe helfen?? Ich finde den Fehler in meinem Programm einfach nicht.

Aufgabe:

Schreiben Sie ein Unterprogramm, das die Länge einer Zeichenkette ermittelt!
int len;
char *s;
len=stringlength(s);

Mein Programm:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int len=0;
char*s;
char text[3]={'A','b','c'};
s=&text[0];
len=stringlength(s);
printf("Laenge: %d \n",len);
system("PAUSE");
return 0;
}
int stringlength(char *s)
{
int len=0;
while(*s !=0)
{
len++;
s++;
}
return len;
}
murekursion
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 10.03.2008
Beiträge: 220

BeitragVerfasst am: 21 März 2008 - 17:36:00    Titel:

Deine Funnktion stringlength ist schon korrekt, aber Du solltest darauf achten, dass deine Eingabe auch nullterminiert ist Wink

Also statt:
Code:
 char text[3]={'A','b','c'};

schreiben:
Code:
 char text[4]={'A','b','c',0};


Den Umweg ueber den Zeiger s musst du uebrigens nicht gehen.

edit:
Aufgeraeumt wuerde deine main()-Funktion so aussehen:
Code:

int main(int argc, char *argv[])
{
  int len=0;
  char text[4]="Abc";
  len=stringlength(text);
  printf("Laenge: %d \n",len);
  system("PAUSE");
  return 0;
}


Wenn du Zeichenketten in "" setzt, werden sie automatisch nullterminiert.

OT: Ist das eine Aufgabe fuer die Schule?
physie
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 11.03.2006
Beiträge: 71

BeitragVerfasst am: 21 März 2008 - 17:46:47    Titel:

Danke, habe die Eingabe jetzt in " " gemacht. Bei der Ausgabe kommt jedoch 7 heraus egal wie lang der eingegebene Text ist. Woran liegt dies?? Die Aufgabe soll mit einem Pointer gelöst werden. Die Aufgabe ist fürs Studium.
murekursion
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 10.03.2008
Beiträge: 220

BeitragVerfasst am: 21 März 2008 - 18:24:20    Titel:

physie hat folgendes geschrieben:
Danke, habe die Eingabe jetzt in " " gemacht. Bei der Ausgabe kommt jedoch 7 heraus egal wie lang der eingegebene Text ist. Woran liegt dies?? Die Aufgabe soll mit einem Pointer gelöst werden. Die Aufgabe ist fürs Studium.
Hast du auch die 3 durch eine 4 ersetzt?
Falls ja, poste bitte exakt den Code, den du ausfuehrst.
physie
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 11.03.2006
Beiträge: 71

BeitragVerfasst am: 21 März 2008 - 18:41:23    Titel:

Habe den Fehler gefunden. Wusste nicht, dass ich die " " auch in die Länge arraylänge miteinrechnen muss. Jetzt funktioniert es. Vielen Dank!
murekursion
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 10.03.2008
Beiträge: 220

BeitragVerfasst am: 21 März 2008 - 18:49:36    Titel:

physie hat folgendes geschrieben:
Habe den Fehler gefunden. Wusste nicht, dass ich die " " auch in die Länge arraylänge miteinrechnen muss. Jetzt funktioniert es. Vielen Dank!
Musst du auch nicht. Aber C setzt eine implizite 0, wenn du "" benutzt. "yello" === { 'y', 'e', 'l', 'l', 'o', 0 }
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Länge einer Zeichenkette in C ermitteln
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum