Announcement

Collapse
No announcement yet.

C Syntax Verständnisprobleme

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C Syntax Verständnisprobleme

    hi,

    ich bin bei meinem c tutorial nun bei dem umgang mit dateien angekommen. wenn man eine datei öffnet muss man diese ja einer prüfung unterziehen. dies wird in dem tut so gelöst:

    Code:
    if (datei == NULL )
    {
    printf ("\nDie Datei konnte nicht geöffnet werden!\n");
    }
    was genau bedeutet das "== NULL" ?
    wird dort geprüft ob die datei leer ist, also keinen inhalt besitzt ?

    auch habe ich bei einer schleife vor kurzem diesen ausdruck gesehen:
    1<<i

    was hat das genau zu bedeuten ?

    vielen dank im vorraus
    greetz

  • #2
    datei wird wohl ein Zeiger sein, der irgendwo mal angelegt wird (über einen Funktionsaufruf).

    Schlägt dieser Funktionsaufruf nun fehl, weil bsp. die Datei nicht existiert, so gibt die Funktion NULL zurück.

    Man kann nun prüfen, ob der Funktionsaufruf erfolgreich war -> Zeiger ist !=NULL
    Christian

    Comment


    • #3
      Code:
      void main ( void )
      {
            FILE *datei; 
      
            datei = fopen ( "test.dat" , "w+" );
            if (datei == NULL ) 
            {
                  printf ("\nDie Datei konnte nicht geöffnet werden!\n");
            }
            else
            {
                  fprintf (datei, "Hallo, dies steht nun in der Datei !");
      
                  printf ("\nAlles OK!\n");
                  printf ("\t\t...und die Datei ist wieder zu\n");
      
                  fclose (datei);
            } 
      }
      hier nichmal der ganze source code aus dem tutorial. leider werde ich aus deiner antwort nicht ganz schlau :/

      1. der zeiger *datei wird eingeührt.
      2. es wird eine datei zum schreiben geöffnet namens test.dat
      3. nun die if-Anweisung: was wird denn hier genau geprüft. evtl mal mit umgangsprachluchen worten ?!
      mir ist nur klar, das wenn die erste bedingung fehl schlägt, die datei erzeugt wird. trifft die erste bedingung zu, kommt es zu einem abbruch.#

      nun kenne ich aber "==" als einen vergleichsoperator aus schleifen. zB: "höre auf wenn i==10 (also wenn i den wert 10 besitzt)"
      wenn ich diese logik nun auf
      Code:
      if (datei == NULL )
      übertrage, komme ich zu dem schluss, das er den vorgang abbricht, WENN die datei leer/nicht vorhanden ist ?!

      stehe ich da gerade auf dem schlauch, oder wie genau muss ich das verstehen ?

      Comment


      • #4
        ich weiss nicht, wie ich es anders erklären soll:

        1. der zeiger *datei wird eingeührt.
        ja, mit FILE *datei;

        2. es wird eine datei zum schreiben geöffnet namens test.dat
        ja mit datei = fopen ( "test.dat" , "w+" );

        Funktioniert das, hat der Zeiger einen Wert der auf eine Stelle im Speicher verweist

        Funktioniert das NICHT hat der Zeiger den Wert NULL

        Nun kannst du also mit dem if prüfen, ob fopen erfolgreich war oder nicht

        Eine kürzere Schreibweise ist

        if(datei) -> Zeigt datei auf einen Bereich im Speicher?

        oder

        if(!datei) -> Zeigt datei nicht auf einen Bereich im Speicher?

        Debugge mal dein Programm und beobachte wie sich datei verändert, wenn fopen geht oder nicht geht
        Christian

        Comment


        • #5
          achsoooo
          das war dann wohl ein kleiner denkfehler meinerseits. mit anderen worten:
          wenn beim öfnnen der datei irgendetwas schief läuft, so nimmt der zeiger den wert NULL an. das erkennt er dann bei der if-anweisung und sgt ein fehler wurde entdeckt.

          danke für die geduld

          Comment

          Working...
          X