Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

Debian GNU/Linux Reference Guide
Prev Home Next

13.7.1 Ein einfaches C-Programm (gcc)

Ein einfaches Beispiel zum Kompilieren von example.c mit einer Bibliothek libm in eine ausf�hrbare Datei namens Testbeispiel:

     $ cat > example.c <<EOF
     #include <stdio.h>
     #include <math.h>
     #include <string.h>
     
     int main(int argc, char **argv, char **envp){
             double x;
             char y[11];
             x=sqrt(argc+7.5);
             strncpy(y, argv[0], 10); /* Puffer�berlauf verhindern */
             y[10] = '\0'; /* f�llen, so dass String mit '\0' endet */
             printf("%5i, %5.3f, %10s, %10s\n", argc, x, y, argv[1]);
             return 0;
     }
     EOF
     
     $ gcc -Wall -g -o Testbeispiel example.c -lm
     $ ./Testbeispiel
             1, 2.915, ./Testbeis,     (null)
     $ ./Testbeispiel 1234567890qwertz
             2, 3.082, ./Testbeis, 1234567890qwertz

Hier wird -lm ben�tigt, um mit der Bibliothek libm f�r sqrt() zu linken. Die eigentliche Bibliothek ist in /lib/ mit dem Dateinamen libm.so.6, was ein symbolischer Link auf libm-2.1.3.so ist.

Schauen Sie auf den letzten Parameter im Ausgabetext. Es gibt mehr als 10 Buchstaben, obwohl %10s spezifiziert ist.

Die Verwendung von Funktionen die Zeiger auf Speicherbereiche ohne Bereichscheck nutzen, wie sprintf und strcpy wird missbilligt, um das Ausnutzen von Puffer�berl�ufen zu verhindern, die obige �berlaufeffekte verwenden. Stattdessen sollte man snprintf und strncpy verwenden.


Debian GNU/Linux Reference Guide
Prev Home Next

 
 
  Published under the terms of the GNU General Public License Design by Interspire