Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Konvertierungs Problem

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
20.04.2008, 11:25 Uhr
KFC Embryo
Ein Huhn


Hallo,

ich habe eine Frage zu Konvertierungen.

Ich hab folgenden Programm Code:


Code:

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

int CountLetters(FILE *fin)
{
    int letter = 0, sign = 0;

    while(fgetc(fin)!= EOF){
    if ((fin == ' ') && (fin == '\n') && (fin == '\t')){
        sign++;
    }
    else{
        letter++;
    }
    }
return letter;
}


int main (void)
{  
    int noLetters;  
    char filename[256];  
    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);
}




In dem Prgramm geht es darum eine Datei zu öffnen.
Und die Buchstaben in der Datei zu zählen.

Mein Compiler sagt mir aber immer das die Konvertierung nicht möglich war:

"error C2446: '==': Keine Konvertierung von 'int' in 'FILE *'"

Ich denke das ich noch irgendwo ein "cast" vergessen habe, aber wo?

Habt ihr eine Idee, danke.

Gruß
--
An nescis, mi fili, quantilla prudentia mundus regatur?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.04.2008, 12:00 Uhr
ao

(Operator)



Zitat von KFC Embryo:

C++:
int CountLetters(FILE *fin)
{
    int letter = 0, sign = 0;
    int c;
    while((c = fgetc(fin))!= EOF){                // <<<--- hier
    if ((c == ' ') && (c == '\n') && (c == '\t')){   /// <<<--- und hier
        sign++;
    }
    else{
        letter++;
    }
    }
return letter;
}



"error C2446: '==': Keine Konvertierung von 'int' in 'FILE *'"


Denkfehler: Du musst nicht den File-Pointer untersuchen, sondern das gelesene Zeichen. Der File-Pointer zeigt nur auf eine Verwaltungsstruktur, deren Inhalt dich nicht interessiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.04.2008, 12:11 Uhr
KFC Embryo
Ein Huhn


Ok danke jetzt hat es funktioniert.
Aber warum sagt der Compiler dann es wäre ein konvertierungs Problem?

Hätte man es auch durch ein "cast" so hinbekommen?

Gruß
--
An nescis, mi fili, quantilla prudentia mundus regatur?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.04.2008, 13:03 Uhr
xXx
Devil


Nein Einfach weil du versuchst einen FILE* und ein Zeichen zu vergleichen. DAzu versucht er FILE* implizit in ein char zu verwandeln ... das haut nicht hin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.04.2008, 15:25 Uhr
ao

(Operator)



Zitat von KFC Embryo:

Aber warum sagt der Compiler dann es wäre ein konvertierungs Problem?

Weil er den Code nur syntaktisch bewerten kann. Ob es inhaltlich richtig ist, oder Blödsinn, das kann er nicht wissen.

Zitat:
Hätte man es auch durch ein "cast" so hinbekommen?

Leider ja, man kann den Compiler durch Casting zwingen, Mist zu übersetzen, in vielen Fällen zumindest. Das ändert aber nichts dran, dass das Programm dann Mist ist. Casting kann Fehler verschleiern, man sollte es also nur da einsetzen, wo es nötig ist

Dieser Post wurde am 20.04.2008 um 15:25 Uhr von ao 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: