C: erreur de Segmentation lors de l'utilisation de printf

Celui-ci est probablement très simple, mais je n'arrive pas à le faire fonctionner.

J'ai ce bout de code:

#include <stdio.h>
#include <string.h>

int main(void)
{

  char buf[100];
  char *p = buf;

  strcpy(p, "Test string");

  printf("%s\n", *p);

}

Ce qui provoque une erreur de segmentation quand je le lance. GDB sorties:

Program received signal SIGSEGV, Segmentation fault.
0xb76af3b3 in strlen () from /lib/i686/cmov/libc.so.6

Mais je ne comprends toujours pas.

Commentaire serait apprécié, merci.

Vous pourriez avoir regardé la GCC avertissement pour avoir une idée du problème: test.c:In function ‘main’: test.c:12: avertissement: format ‘%s’ attend de type ‘char *’, mais l'argument 2 est de type "int"
C'est marrant, je n'ai pas de message d'avertissement, si je le faisais, j'aurais probablement pu sauvé tout le monde un certain temps, y compris moi-même 🙂
Vous pouvez vous assurer d'utiliser la -Wall compilateur drapeau à faire assurez-vous de ne pas manquer les mises en garde.

OriginalL'auteur Hamza | 2010-06-04