Une entrée prévue pour le code que je suis en train de courir ressemble à quelque chose comme ceci:La prise d'entrée de défaut de segmentation de stdin
(i, j) où i et j sont des entiers. (Ex. (1,2), (10,21), etc.)
J'ai besoin de stocker les deux entiers dans des variables int.
Voici ce que je faisais:
getchar(); // gets open parenthesis
// gets first num
char *first;
int z = 0;
int a;
while((a = getchar()) != ',') {
first[z] = a;
z++;
}
int firstNum;
sscanf(first, "%d", &firstNum);
printf("%d\n", firstNum); //checking if got correct num
// gets second num
char *second;
int y = 0;
int b;
while((b = getchar()) != ')') {
second[y] = b;
y++;
}
int secondNum;
sscanf(second, "%d", &secondNum);
printf("%d\n", secondNum); //checking if got correct num
Il travaille pour obtenir le premier numéro. Mais, quand je l'ai fait pour le second numéro, j'ai eu une faute de segmentation et je n'arrive pas à comprendre pourquoi? J'ai simplement refait le processus d'obtention du premier numéro?
Merci!
'first' est seulement un pointeur, il n'a pas de mémoire => utilisation de malloc ou tableau brut – Garf365
Je l'ai changé en un tableau de taille 100 et cela fonctionne. Je vous remercie! – Katrina
En outre, le retour à la ligne qui est écrit sur stdin lorsque vous appuyez sur la touche Entrée peut entraîner des problèmes avec les appels suivants à 'sscanf'. Inclure un espace dans la première partie de votre chaîne de format pour consommer le '\ n':' sscanf (d'abord, "% d", & firstNum); ' – ryyker