Benutzer mit den meisten Antworten
Wie kann ich die Anzahl von Zeichen z.B. "Hallo Welt\0" zählen?

Frage
-
Ich brauche ma wieder eure tatkrätige unterstützung^^
Ich lerne grade C bzw C++ und habe einige Aufgaben vom Internet rausgesucht.
Leider stehen da aber keine Lösungen dabei und so hänge ich fest. Alleine schon weil ich es noch nicht so gut kann. (Ich lerne momentan Zeiger und so.)
Aauf jeden fall ist die Aufgabe: Ich soll einen Text kopieren und danach die Zeichen von ihm ablesen und asugeben.
Z.B. "Hello World\0" = 11 (Die \0 ist damit er das ende erkenne kann.
Ich bin momentan so weit: Aberr ich weiß nicht wie ich weitermachen soll.
#include "stdafx.h"
#include <stdio.h>
void main()
{
//Festlegen der Zeichenkette
char txt1[11] = "Hallo Welt";
char *pt1, *pt2, txt2[11];
for (pt1 = &txt1[0], pt2 = &txt2[0]; *pt1; pt1++, pt2++)
*pt2 = *pt1;
pt2 = 0;
//Ausgabe
printf("%s\n",txt1);
printf("%s\n",txt2);
getchar();
}Danke für eure Hilfe!
mfg. Paul
Antworten
-
Du könntest auch alternativ prüfen ob das aktuelle Zeichen in txt1 Null ist, wenn nicht das Zeichen nach txt2 kompieren, und dann zum nächsten zeichen gehen, prüfen, ob Null und dann kopieren wenn es nicht null ist. Wenn Du in txt1 dann ein Zeichen mit dem Wert Null liest, kopierst Du das, und beendest en kpiervorgang.
Da würde sich eine While Schleife anbieten.
- Als Antwort markiert icekeuter Donnerstag, 18. Oktober 2012 12:00
Alle Antworten
-
Mit der Funktion strlen kannst Du die Länge eines Strings ermitteln:
http://msdn.microsoft.com/en-us/library/78zh94ax.aspx
Dann kommst Du und kopierst Zeichen für Zeichen in Deiner for Schleife die Zeichen von txt1 nach txt2.
- Bearbeitet Bordon Mittwoch, 17. Oktober 2012 09:35
-
Du könntest auch alternativ prüfen ob das aktuelle Zeichen in txt1 Null ist, wenn nicht das Zeichen nach txt2 kompieren, und dann zum nächsten zeichen gehen, prüfen, ob Null und dann kopieren wenn es nicht null ist. Wenn Du in txt1 dann ein Zeichen mit dem Wert Null liest, kopierst Du das, und beendest en kpiervorgang.
Da würde sich eine While Schleife anbieten.
- Als Antwort markiert icekeuter Donnerstag, 18. Oktober 2012 12:00
-
-
So ich habe es geschaft :)
Habe deins leider etwas später gelesen aber ist sehr ähnlich.
#include "stdafx.h" #include <stdio.h> int Zeigerlänge(char *); // void main() { char txt[] = "Hallo Welt\0"; int länge = 0; länge = Zeigerlänge(txt); printf("%s hat %d Zeichen\n",txt,länge); getchar(); } /// Funktionen ////////////////////// int Zeigerlänge(char *pt) { int anz = 0; while (*pt != '\0') //Ich erstelle eine "While" Schleife die zählt einen Index hoch, die prüft ob eine Null kommt. Die Zahl gebe ich dann zurück { pt++;anz++; } return anz; }
Danke für die Antwort!
-
Eine Anmerkung zu Deinen Variablen, Du solltest auf solche sonderzeichen wie ä,ö,ü verzichten. Es gibt viele C/C++ compiler die da einen Compilerfehler spendieren.
Mir war es nicht einmal bekannt, dass das inzwischen geht, früher konnte das VC (ich meine VC6)nicht.
-