mon programme C se compile et s'exécute correctement dans PuTTY jusqu'à ce que la boucle soit répétée pour la deuxième fois. Un ami avec le même code semblait pouvoir faire fonctionner son programme, et j'ai même essayé de changer les différences entre mon code et le sien à son code, et toujours pas de cigare. Ci-dessous est le code et un exemple de ce qui se passe lorsque le code est exécuté. Je crois que la question se situe dans la déclaration de malloc.Erreur de segmentation après la deuxième itération d'une boucle
#include<stdlib.h>
#include<stdio.h>
void getInts(int ** integersArray, int * numInput);
int main() {
int * integersArray;
int numInput;
int i;
getInts(&integersArray, &numInput);
for (i = 0; i < numInput; i++) {
printf("number %d = %d\n", i+1, integersArray[i]);
}
return 0;
}
void getInts(int ** integersArray, int * numInput) {
int i;
printf("Please enter the number of intergers you want to input\n");
scanf("%d", numInput);
*integersArray = (int *) malloc(sizeof(int) * *numInput);
for (i = 0; i < *numInput; i++) {
printf("please enter integer %d: ", i+1);
scanf("%d", (integersArray[i]));
}
}
Sortie
Please enter the number of intergers you want to input
4
please enter integer 1: 2
please enter integer 2: 3
Segmentation fault (core dumped)
ce que vous essayez de faire avec '* * numInput'? Double multiplication? NumInput est un int, pas un pointeur, donc vous ne pouvez pas utiliser son contenu. – Mawg
@Mawg Incorrect. Le paramètre est 'int * numInput'. –
Désolé, j'ai trouvé la déclaration précédente. Mon mauvais, votre +1. Dans ce cas, je recommande de prêter attention aux avertissements du compilateur, en exécutant 'cppcheck', depuis: http://cppcheck.wiki.sourceforge.net/ puis en passant par le débogueur – Mawg