eine frage



  • Hallo Leute bitte ich habe eine frage was bedeutet EOF auch FEOF? wann benutzt man dass bitte Verzeihung ich bin Anfängerin 🤡
    while(help[i-1] != EOF && help[i-1] != '\n'



  • EOF ist ein #define
    oft -1



  • EOF bedeutet soviel ich weiß END OF FILE benutzt man meistens für das Auslesen
    von files in verbindung mit einem if oder while,um zu prüfen wann das ende eines strings eintritt....



  • net schrieb:

    EOF ist ein #define
    oft -1

    @net:Nur weils groß geschrieben ist,muß es noch lange keine Präprozessor Anweißung sein.Bist wohl auch noch C-Anfänger? 😉



  • danke schön für die Antwort verstehe ich jetzt aber besser 🤡



  • @net muß mich bei dir Entschuldigen EOF ist in dem fall ein #define das -1 oder 0 sein kann...es markiert aber trotzdem das Ende eines strings.also wir hatten beide recht...sorry!



  • Cico schrieb:

    es markiert aber trotzdem das Ende eines strings.also wir hatten beide recht...sorry!

    ich vielleicht - aber du jedenfalls nicht.
    das ende eines strings ist '\0', ein char-wert.
    EOF ist -1, ein 'int' also 0xffff, 0xffffffff oder ähnliches, aber nicht 0xff weil man das sonst nicht von char's unterscheiden könnte.



  • @net
    '\0' ist in C übrigens auch ein int :p

    @vivi
    bitte benutz doch vernünftige Topics. Wenn man da so was eintragen sollte wie "eine frage", dann bräuchte man die Topics einfach nicht, da hier ja in der Regel nur Fragen gepostet werden.

    wmfrs <-- lesen, lernen!



  • kingruedi schrieb:

    @net
    '\0' ist in C übrigens auch ein int

    sicher? ich dachte durch das '' wirds zur char-konstanten.
    aber eigentlich ist es doch bloss eine null. ohne typ, kann man einem char, int, long usw. zuweisen
    oder nicht?



  • @net
    bin mir sehr sicher. Wenn du mir nicht glauben willst

    #include <stdio.h>
    
    int main() {
      printf("literal: %d int: %d\n",sizeof('\0'),sizeof(int));
      return 0;
    }
    

    gibt bei mir beides mal 4 aus. Falls dir das immer noch nicht reicht, dann schlag ich gleich gerne im Standard nach



  • net schrieb:

    Cico schrieb:

    es markiert aber trotzdem das Ende eines strings.also wir hatten beide recht...sorry!

    ich vielleicht - aber du jedenfalls nicht.
    das ende eines strings ist '\0', ein char-wert.
    EOF ist -1, ein 'int' also 0xffff, 0xffffffff oder ähnliches, aber nicht 0xff weil man das sonst nicht von char's unterscheiden könnte.

    Ich hatte ebenfalls recht mit der Aussage das es ein End of File Marker ist...

    EOF, The End of File Marker

    EOF is a character which indicates the end of a file. It is returned by read commands of the getc and scanf families when they try to read beyond the end of a file.

    http://www.strath.ac.uk/IT/Docs/Ccourse/subsubsection3_11_4_2.html
    http://www.computerhope.com/jargon/e/eof.htm
    http://publib.boulder.ibm.com/infocenter/tpfhelp/index.jsp?topic=/com.ibm.tpf.doc.4.1-PUT18/gtpc2/gtpc2m2d.htm



  • Und wenn du mir immer noch nicht glaubst dann schau unter:
    man feof



  • Cico schrieb:

    Ich hatte ebenfalls recht mit der Aussage das es ein End of File Marker ist...

    warum willst du mit aller gewalt recht behalten?

    EOF is a character which indicates the end of a file....

    wenn man's genau nimmt, ist dieser text auch nicht ganz richtig.
    EOF ist kein 'character'.

    aber egal, alles weitere wär' nur erbsenzählerei.



  • net schrieb:

    kingruedi schrieb:

    @net
    '\0' ist in C übrigens auch ein int

    sicher? ich dachte durch das '' wirds zur char-konstanten.
    aber eigentlich ist es doch bloss eine null. ohne typ, kann man einem char, int, long usw. zuweisen
    oder nicht?

    '\0' ist 0, ich glaube sogar unsigned int, weil man keine negative chars hat. Deshalb macht man auch bei (wenn x ein char[...] ist) x[4]=0; und die Compiler geben da keine Warnungen wegen Typfehler oder so.



  • ob es unsigned ist, weiss ich nicht. Aber char muss ja auch nicht unsigned sein!

    Das int implizit in char konvertiert wird, ist klar, sonst hätten die sicher aus ''-Literalen keine ints gemacht, wär ja doof immer char a=(char)'a'; schreiben zu müssen 😉

    btw. in C++ sind ''-Literale aber wirklich chars!



  • [quote="net"]

    Cico schrieb:

    Ich hatte ebenfalls recht mit der Aussage das es ein End of File Marker ist...

    warum willst du mit aller gewalt recht behalten?

    Weil ich mir von dir nicht sagen lasse das ich im unrecht bin,wenns nicht so ist...EndOfFile 😃



  • Cico schrieb:

    Weil ich mir von dir nicht sagen lasse das ich im unrecht bin,wenns nicht so ist...

    es war aber so.
    das meinte ich:

    Cico schrieb:

    EOF ist in dem fall ein #define das -1 oder 0 sein kann...es markiert aber trotzdem das Ende eines strings.

    1. ist EOF nicht das ende eines strings. strings werden in c mit einer 0 begrenzt
    2. kann EOF nicht 0 sein denn dann könte man keine nullen in files schreiben

    edit: punkt 2 nehm' ich wieder zurück 😉



  • so um mal hier mit den Spekulationen aufzuräumen

    ISO/IEC 9899:1999 7.19.1.3 schrieb:

    3 The macros are NULL (described in 7.17);
    [...]
    EOF
    which expands to an integer constant expression, with type int and a negative value, that
    is returned by several functions to indicate end-of-file, that is, no more input from a
    stream;



  • es war aber so.
    das meinte ich:

    Cico schrieb:

    EOF ist in dem fall ein #define das -1 oder 0 sein kann...es markiert aber trotzdem das Ende eines strings.

    1. ist EOF nicht das ende eines strings. strings werden in c mit einer 0 begrenzt
    2. kann EOF nicht 0 sein denn dann könte man keine nullen in files schreiben

    edit: punkt 2 nehm' ich wieder zurück ;)[/quote]

    Zu punkt 2:

    #define EOF 0
    /*
    The problem is, that value
    is not the same for all computers.  On some computers you would define the
    constant like this:
    #define EOF -1
    On others you would define it like this:
    #define EOF 0
    */
    

    siehe dazu auch:
    http://www.glue.umd.edu/afs/glue.umd.edu/system/info/olh/Programming/C_Programming_on_Glue/The_Third_C_Program_Character_Data/eof_stdio



  • Cico schrieb:

    /*
    The problem is, that value
    is not the same for all computers. On some computers you would define the
    constant like this:
    #define EOF -1
    On others you would define it like this:
    #define EOF 0
    */

    das ist aber unsinn, auch wenn's im internet steht. warum?
    weil man dann mit fgetc() keine nullen aus einem stream lesen könnte.
    wie soll man in diesem fall eine 0 von EOF unterscheiden?


Anmelden zum Antworten