Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Buchstaben zählen aus .txt

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
22.04.2007, 12:10 Uhr
~power
Gast


Hi!

Ich habe folgendes Programm geschrieben:


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

int CountLetters(FILE *fin)
{
    int x,count=0;
    while((x=fgetc(fin))!=EOF)
        count++;


    return count;
}



void main (void)
{
   int noLetters;
   char filename[12];
   FILE *infp;

   printf("Geben Sie bitte den Namen der Datei ein: ");
   scanf("%s", filename);
   if ((infp = fopen(filename,"r")) == NULL ) {
       printf("Datei mit dem Namen %s konnte nicht geoeffnet werden\n",filename);
       exit(1);  
   }
   noLetters = CountLetters(infp);
   printf("Die Datei %s enthaelt %d Buchstaben\n", filename, noLetters);
   fclose(infp);
}


Wenn ich es ausführe, kann ich den Pfad eingeben, dann zählt er die Buchstaben und bringt dennoch diesen Fehler:

hier klicken

Kann mir jemand sagen, was ich falsch gemacht habe?
Ich weiß nicht, was ich ändern muss.

vielen Dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.04.2007, 12:31 Uhr
xXx
Devil


hmm ... soll das C++ oder C sein? sieht aus wie C ..

also du hast wahrscheinlich einen zu kurzen char array angelegt ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.04.2007, 12:40 Uhr
xXx
Devil



C++:
#include <fstream>
#include <string>

int main()
{
    std::cout << "Dateiname: " << std::flush;
    std::string file_name;
    std::getline(std::cin, file_name);
    std::cout << "Anz. Zeichen: " << file_count_chars(file_name) << std::endl;
}

std::size_t file_count_chars(const std::string& file_name)
{
    std::ifstream file_stream(file_name.c_str(), std::ios::in);
    if (!file_stream)
        return 0;

    std::size_t char_count = 0;
    while (file_stream.good() == true)
    {
        file_stream.get();
        ++char_count;
    }

    file_stream.close();
    return char_count;
}
... geht aber eleganter ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.04.2007, 15:15 Uhr
~power
Gast


Ja, das ist C.
Also soll ich das char-Array größer machen?! Mal testen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.04.2007, 22:15 Uhr
Blubber2063



Das ist zwar eine Idee, aber nicht die Ideallösung, du solltest nicht einfach scanf benutzen, grade wo du hier nicht angeben kannst wie groß dein Puffer ist, entweder du benutzt fgets, oder du schreibst dir ne funktion die dynamisch den benötigten Speicher für den Dateinamen alloziert. Und der Array ist definitiv zu klein, die Fehlermeldung ist da schon sehr präzise.
 
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: