Я пишу небольшую программу для практики malloc
и sscanf
функции библиотеки. Но, к сожалению, я получаю ошибку ошибки сегментации. Я гугл и боролся часами, но без результата. Кто-нибудь может привести меня к этому?Что вызывает ошибку ошибки сегментации в этой крошечной программе c?
#include <stdio.h>
#include <stdlib.h>
void print_array(int a[], int num_elements);
int main(void) {
int m;
printf("How many numbers do you count: \n");
scanf("%d", &m);
int *a = (int*)malloc(m * sizeof(int*));
char buf[100];
setbuf(stdin, NULL);
if (fgets(buf, sizeof buf, stdin) != NULL) {
char *p = buf;
int n, index;
while (sscanf(p, "%d %n", &a[index], &n) == 1 && index < m) {
// do something with array[i]
index++; // Increment after success @BLUEPIXY
p += n;
}
if (*p != '\0')
printf("you are giving non-numbers, will be ignored");
}
print_array(a, m);
free(a);
return 0;
}
void print_array(int a[], int num_elements) {
int i;
for (i = 0; i < num_elements; i++) {
printf("%d ", a[i]);
}
}
'INT * а = (INT *) таНос (м * SizeOf (INT *));' Вы выделяете массив для размера ' m' указатели, а не 'm'' int '. – BoBTFish
'int n, index;' -> 'int n, index = 0;' – BLUEPIXY
'sscanf (p,"% d% n ", & a [index], & n) == 1 && index < m' -->' index
BLUEPIXY