Artikel pedia
| Home | Kontakt | Artikel einreichen | Oberseite 50 artikel | Oberseite 50 autors
 
 


Artikel kategorien
Letztes fugte hinzu
    Ms-access

   Instrumentation + schnittstellen

   Pc tuning - volle kraft voraus für ihr system

   Informatorische grundlagen

   Javascript

   Interne sortieralgorithmen - der kern der sache

   Plotter und sonstige drucker

   Frage 20 (rössl priska)

   Internet - programmierung

   Monitore

   Semesterarbeit und spezialgebiet für informatik

   Erörterungs zum thema

   Inhaltsverzeichnis

   Einführung in die entwicklung ganzheitlicher informationssysteme:

   Titel dokument
alle kategorien

  Häufige fehlerursachen in c

Häufige Fehlerursachen in C   Referatsaufbereitung von Michael Thell Referatsquellen von Thomas Gartner und Michaela Marder  (keine Ahnung von wo die beiden abgeschrieben haben)     Titel Fehler: 1.Allgemeine 2.Arrays 3.Strings 4.Zeiger 5.Funktionen 6.

Typen      1. Fehler allgemeiner Art    Verwechslung von == und = Erklärung:     == .....

Vergleichsoperator                = ......

Zuweisungsoperator Beispiel:                int i;                ...                if (i = 5) {  //i = 5 ist eine Zuweisung, immer TRUE!                   ...

}   Verwechslung von ' und " Erklärung:     ' ......

Begrenzung eines einzelnen Zeichens                " ......

Begrenzung einer Zeichenkette Beispiel:                char zeichen, zeichenkette[6];                  zeichen = 'z';                // richtig!                zeichen = "z";                // falsch!                strcpy(zeichenkette,"test");  // richtig!                strcpy(zeichenkette,'test');  // falsch!   Verwechslung der Stellung von In/Dekrement-Operatoren Beispiel:      x = ++i;  // x erhält den neuen Wert von i                x = i++;  // x erhält den alten Wert von i   Kontrollstrukturen Strichpunkte hinter einer Kontrollanweisung (if, for, while) entsprechen einer Leeranweisung. Beispiel:                for (int i=0; i<10; i++);                   printf("%i",i);              // i wird nur einmal ausgegeben   Fehlendes break im switch-Statement Beispiel:                switch(i) {                   case 1: Printf("eins"); break;   // Ausgabe:  eins                   case 2: Printf("zwei");          // Ausgabe:  zweidrei                   case 3: Printf("drei"); break;   // Ausgabe:  drei                } Achtung: In Fällen von trickreichen Algorithmen kann das break auch absichtlich weggelassen werden!2. Fehler bei Arrays    Bereichsüberschreitung In C beginnen Arrays mit dem Index 0, hingegen bei der Vereinbarung wird die Anzahl der Elemente des Arrays angegeben. Beispiel:      int feld[100];                   // Index von 0 bis 99      for (int i = 1; i<=100; i++)     // Der Arraybereich wird überschritten      {          printf("%i",feld[i]);          ...

     }   Arrays als Parameter   Arrays werden immer als Zeiger auf das erste Element übergeben. Beispiel:      void test (char name[6])      {          printf("%i",sizeof(name));      } Beachte: Diese Funktion gibt die Zeigergröße (je nach Speichermodell 2 bzw. 4) und nicht die Arraygröße aus!  3. Fehler bei der Stringbehandlung  Grundsätzlich treten bei der Verwendung von Strings, bedingt durch deren gleiche Implementierung, die selben Fehler wie bei Arrays auf!   nicht abgeschlossene Strings   In C werden Strings als Arrays von einzelnen Zeichen abgespeichert. Das Ende des Strings wird durch eine Abschlußnull (ASCII 0) definiert. Fehlt diese Null wird das Stringende von Stringfunktionen nicht erkannt!   Beispiel:          char t1[5]="test";          char t2[6];          strncpy(t2, t1, 2);   // String t2 is nicht durch eine Null abgeschlossen          Printf("%s",t2);      // gibt den String und den gesammten Speicherinhalt                                // bis zur ersten ASCII 0 aus!   Vergleich bzw.


Zuweisung Erklärung:   == .... Vergleicht Adressen, nicht die Inhalte              = ..

... setzt Adresse um, kopiert nicht die Inhalte => Vergleichen von Inhalten mit strcmp => Zuweisen von Inhalten mit strcpy Beispiel:       char name1[5]="test";       char name2[5]="test";       char *name3;       name3 = name1;       if (name1 == name2)  {}            // => FALSE       if (name1 == name3)  {}            // => TRUE       if (strcmp(name1, name2) == 0)     // => TRUE   Unterschied zwischen Leerstring und NULL Der Leerstring entspricht einem Character-Array bei dem das 1. Element ASCII 0 ist. NULL ist eine Konstante, die angibt, daß ein Zeiger den Wert 0 hat.

Beispiel:     char *x1 = NULL;  // Zeiger hat den Wert 0     char *x2 = "";    // Zeiger zeigt auf eine Speicherstelle in dem 0 steht    4. Fehler bei Zeigern    nicht initialisierte Zeiger Zeiger zeigen vor der Initialisierung auf irgendeine Adresse im Speicher, daher müssen sie vor ihrer Verwendung immer initialisiert werden bzw. Speicher muß reserviert werden!   Beispiel:      char feld[10];      char *s1;      char *s2 = feld;      strcpy (s1, "Text");   // falsch      strcpy (s2, "Text");   // richtig      5. Fehler bei Funktionsaufrufen  In C gibt es grundsätzlich keine Var-Parameter. Daher müssen Var-Parameter "künstlich" durch Zeiger erzeugt werden. Funktionsaufruf stimmt mit der Vereinbarung nicht überein Beispiel:     int zahl;     scanf(" %d ", zahl);  //Falsch! es wird ein Zeiger erwartet!     scanf(" %d ",&zahl);  //Richtig!   Der Funktionsaufruf ist richtig, die Bedeutung jedoch falsch Beispiel:        Falsch:         int *zahl;         scanf("%d", zahl);   // Zeiger ist nicht initialisiert!      Richtig:         int zahl, *pzahl;         pzahl = &zahl;         scanf("&d", pzahl);    6.

Fehler bei der Typkonvertierung   Ausdrücke Werden Variablen underschiedlichen Typs einander zugewiesen, so laufen automatische Konvertiermechanismen ab. Ergebnistyp ist vom Operandentyp abhängig!   Beispiel:     float f;     int i1, i2;     long l;     ...     f=1/5;        // f erhält den Wert 0 anstatt 0.2     .

..     l=i1*i2       // Überlauf wenn 32767 überschritten wird     ...   Char und Int Konvertierung Grundsätzlich kann mit Char- wie mit Int-Werten gerechnet werden.

Bei der Ausgabe gibt es jedoch Unterschiede. Beispiel:       char zeichen;     ...     zeichen = 'ä';           // ASCII 132     ..

.     printf("%d", zeichen);   // Ausgabe: -124 Lösung: zeichen als unsigned char vereinbaren!

Suchen artikel im kategorien
Schlüsselwort
  
Kategorien
  
  
   Zusammenfassung Der Vorleser

   sachtextanalyse

   interpretation zwist

   Fabel interpretation

   literarische charakteristik

   interpretation bender heimkehr

   felix lateinbuch

   interpretation der taucher von schiller

   textbeschreibung

   charakterisierung eduard selicke
Anmerkungen:

* Name:

* Email:

URL:


* Diskussion: (NO HTML)




| impressum | datenschutz

© Copyright Artikelpedia.com