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 Programme simple en C (gcc)

Un exemple simple pour compiler example.c avec la biblioth�que libm dans l'ex�cutable run_example :

     $ 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); /* emp�che un d�passement de tampon */
             y[10] = '\0'; /* remplissage pour �tre s�r que la cha�ne finit
     	                 par '\0' */
             printf("%5i, %5.3f, %10s, %10s\n", argc, x, y, argv[1]);
             return 0;
     }
     EOF
     $ gcc -Wall -g -o run_example exmple.c -lm
     $ ./run_example
             1, 2.915, ./run_exam,     (null)
     $ ./run_example 1234567890qwerty
             2, 3.082, ./run_exam, 1234567890qwerty

Ici, -lm est n�cessaire pour lier la biblioth�que libm, pour utiliser sqrt(). La biblioth�que est en fait dans /lib sous le nom libm.so.6 qui est un lien symbolique vers libm-2.1.3.so.

Regardez le dernier param�tre dans le texte affich�. Il y a plus de 10 caract�res affich�s alors que %10s est sp�cifi�.

L'utilisation de fonctions effectuant des op�rations sur des pointeurs sans v�rifier la limite, comme sprintf et strcpy, est d�pr�ci�e pour pr�venir les exploits de d�passement de tampon, annulant les effets ci-dessus. Utilisez snprintf et strncpy � la place.


Debian GNU/Linux Reference Guide
Prev Home Next

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