Ceci est mon code:c segfault due à un mauvais pointeur
#include <stdio.h>
#include <stdlib.h>
void getinfo(unsigned int a, unsigned int b, char **s);
int main(){
unsigned int len_max = 8;
unsigned int current_size = 0;
char *pStr = malloc(len_max);
if(pStr == NULL){
perror("\nMemory allocation\n");
return EXIT_FAILURE;
}
current_size = len_max;
printf("Inserisci hostname: ");
getinfo(len_max, current_size, &pStr);
printf("\nLa stringa inserita è: %s\n", pStr);
free(pStr);
return EXIT_SUCCESS;
}
void getinfo(unsigned int a, unsigned int b, char **pStr){
unsigned int i = 0;
char c = EOF;
while((c = getchar()) != '\n'){
*pStr[i++] = (char)c;
if(i == b){
b = i+a;
if((*pStr = realloc(*pStr, b)) == NULL){
perror("\nMemory allocation error\n");
exit(EXIT_FAILURE);
}
}
}
*pStr[i]='\0';
}
Quand j'exécute ce code je suis une erreur de segmentation quand j'appuyez sur Entrée (après que je l'ai écrit la chaîne).
Je suis sûr que le problème est dans la fonction (probablement le problème est le pointeur * s) mais je ne sais pas comment le corriger ...
Note de côté: 'getchar' renvoie' int' et non 'char'. Vous devriez envisager de changer 'c' en' int' –
oh merci :) J'ai corrigé l'erreur! – polslinux