Ben c'est pas trop dans l'optique, normalement ton utilisateur est sensé utilisé le '.' du pavé numérique, ce n'est pas à toi programmeuse de gérer ça. Si vraiment tu veux convertir ce qu'il a tapé :
1) stocke sa saisie dans une chaîne (char *)
2) change l'éventuelle virgule par un point
3) utilise la commande atof
http://unixhelp.ed.ac.uk/CGI/man-cgi?atof+3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
// chaine dans laquelle on stocke la saisie
char *buffer = (char *)malloc(255*sizeof(char));
double d;
unsigned int len=0,i;
// (1)
printf("val ? ");
scanf("%s",buffer);
// (2)
len = strlen(buffer);
for(i=0;i<len;++i){
if(buffer[i]==',') buffer[i]='.';
}
// (3)
d = atof(buffer);
free(buffer); // libérer le tampon
printf("double = %lf\n",d); // afficher le double
getchar(); // appuyer sur entrée pour finir le programme
return 0;
}