Je suis novice en programmation C et j'essaye actuellement de lire une ligne de stdin en utilisant fgets(), mais j'ai des problèmes avec l'allocation de mémoire car j'utilise un char * pour pointer vers la chaîne que je veux lire. Lorsque j'exécute le fichier, il signale une erreur de segmentation.Lecture depuis stdin en utilisant fgets()
C'est la fonction que je utilise:
char *read_line(char *line){
printf("%s",PROMPT);
line = (char*)malloc(sizeof(char)*500);
fgets(line,sizeof(line),stdin);
printf("%s","pasa el fgets");
return line;
}
Et mon principal:
void main(){
char line0;
char *line=&line0;
while(read_line(line)){
execute_line(line);
}
}
'char line0; char * line = &line0; 'Maintenant' line' pointe vers un tampon 'char' de longueur 1. Si votre ligne a une longueur de plus de 1 octet, le buffer sera surchargé. Au lieu de simplement bloquer le code jusqu'à ce qu'il compile, essayez de réellement * comprendre * ce qu'il fait. Je recommanderais un tutoriel C, un livre ou un cours. –
Tant d'erreurs dans si peu de lignes de code ;-) –
'sizeof (line)' est la taille d'un pointeur, pas la taille de la mémoire allouée. – chux