Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger auf Zeiger - char Zeichenanzahl ausgeben - strlen?

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 <
000
27.12.2007, 16:27 Uhr
Shaftback2000



Hi,

ich bräuchte mal Hilfe.

Ich soll ein Programm schreiben, welches die Anzahl der Buchstaben ausgibt.
Das ganze soll mit einem Zeiger auf Zeiger auf char laufen.

Folgendes habe ich jetzt geschrieben:


Code:

int main()
{
char dummy [81];
int NamAnz =3;
char **PtrNamPtrArr = NULL; ;

PtrNamPtrArr = ( char** ) calloc( NamAnz , sizeof(char) );
for(int i =0;i<NamAnz;i++)
  {
    scanf("%s",&PtrNamPtrArr[i]);
    gets(dummy);
  }
for(int i =0;i<NamAnz;i++)
  {
    printf("\n%s",&PtrNamPtrArr[i]);
  }
free(PtrNamPtrArr);
  gets(dummy);
  return 0;
}




Das ist bis jetzt die Eingabe und die Ausgabe. Läuft auch soweit. Nur wenn ich jetzt die länge der einzelnen Strings besimmen will geht es nicht. Ich habe das mit strlen versucht.

Danke schonmal im vorraus....

Achja das ganze muss mit einem dynamischen array laufen. Ich habe NamAnz erstmal zum testen auf 3 gesetzt....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.12.2007, 16:36 Uhr
xXx
Devil


Was geht an strlen nicht? musst schon bsw. strlen(PtrNamPtrArr[i]) nehmen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.12.2007, 17:26 Uhr
Kest
saint


Hi!

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

int main()
{
    char buf[81];
    const int NamAnz =3;
    char **PtrNamPtrArr = NULL;

    PtrNamPtrArr = (char**) malloc( NamAnz * sizeof(char**));

    for(int i=0; i<NamAnz; i++){
        fgets(buf, 81, stdin);
        PtrNamPtrArr[i] = (char*)malloc(strlen(buf)+1);
        strcpy(PtrNamPtrArr[i], buf);
    }

    for(int i=0; i<NamAnz; i++){
        printf("\n%s",PtrNamPtrArr[i]);
    }

    for(int i=0; i<NamAnz; i++)
        free(PtrNamPtrArr[i]);
    free(PtrNamPtrArr);

    return 0;
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 27.12.2007 um 18:18 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.12.2007, 18:08 Uhr
Pablo
Supertux
(Operator)


@Kest: Thou shalt not cast malloc!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.12.2007, 18:26 Uhr
Kest
saint


Ja, ja, das weiß ich. Aber wegen >for(int i=0< hab ich's als C++ übersetzt und musste casten. Obwohl ich mir ziemich sicher bin, dass C-Standard >for(int i=0< übernommen hatte, hab ich noch keinen Compiler gesehen, der das kann.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.12.2007, 18:48 Uhr
Hans
Library Walker
(Operator)



Zitat von Kest:
Obwohl ich mir ziemich sicher bin, dass C-Standard >for(int i=0< übernommen hatte, hab ich noch keinen Compiler gesehen, der das kann.

Welcher denn? C-89 oder C-99??

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.12.2007, 18:49 Uhr
Kest
saint


C-99
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.12.2007, 18:55 Uhr
Hans
Library Walker
(Operator)


Okay, das kann angehen. Bei C-89 ist es ja bekanntlich ein Fehler.
Aber gibt es überhaupt irgend einen Compiler, der den C-99 Standard vollständig unterstüzt?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.12.2007, 21:30 Uhr
0xdeadbeef
Gott
(Operator)


gcc akzeptiert for(int i = 0; ... im C99-Modus. Einfach mal mit -std=c99 kompilieren.

Was die allgemeine Unterstützung angeht, das kann man so oder so sehen. Die meistbenutzten Features dürften wohl inzwischen in allen gängigen Compilern unterstützt sein, im Detail lässt sich der Teufel allerdings weiterhin mühelos finden. Den Status der Unterstützung in gcc kannst du hier nachlesen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.12.2007 um 21:31 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.12.2007, 19:22 Uhr
Shaftback2000



Vielen dank für eure Hilfe.

Die Lösung mit fgets hat mir echt weitergeholfen jetzt konnt ich auch endlich über strlen die Länge des Strings bestimmen.

Dieser Post wurde am 28.12.2007 um 19:22 Uhr von Shaftback2000 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: