Для школы (да, школьные проекты) Мне нужно адаптировать одну программу на C ... Мне нужно создать массив со значениями из txt-файла (что, я думаю, было правильно сделанный). Теперь я хотел распечатать значения, и в этом проблема! Я пробовал много способов, но я всегда вижу адрес памяти. Вот код:C - Невозможно напечатать значения динамических массивов
int* init_dados(char *nome,int *m, int *n, int *iter)
{
FILE *f;
int *p, *q;
int i, j,k,contador=0,lixo=0,aux=0,flag=0;
f=fopen(nome, "r");
if(!f)
{
printf("Erro no acesso ao ficheiro dos dados\n");
exit(1);
}
fscanf(f, " %d %d", m,n);
p = malloc(sizeof(int)*(*m)*(*n));
if(!p)
{
printf("Erro na alocacao de memoria\n");
exit(1);
}
q=p;
for (i = 0; i < *m; i++)
{
for (j = 0; j<*n; j++)
{
//se ainda nao leu nada
if (flag == 0)
{
for (contador = 0; contador < *n; contador++)
{
fscanf(f, "%d", &lixo);
}
flag = 1;
break;
}
if (flag == 1)
{
fscanf(f, " %d", &k);
break;
}
for (contador = 0; contador < k; contador++)
{
fscanf(f, " %d", q++);
}
}
}
//PRINTING CODE
for (i = 0; i < *m; i++)
{
printf("\n");
for (j = 0; j < *n; j++)
{
printf("%d ", &q[j]);
q++;
}
}
fclose(f);
return p;
}
Жду ваших мыслей, спасибо!
EDIT: @iharob Я изменил это:
for (contador = 0; contador < k; contador++)
{
fscanf(f, " %d", q++);
}
и
for (i = 0; i < *m; i++)
{
printf("\n");
for (j = 0; j < *n; j++)
{
printf("%d ", p[j]);
p++;
}
}
и до сих пор не работает
EDIT2: файл:
10 10
1 1 1 1 1 1 1 1 1 1
2
1 8
2
5 6
4
1 2 3 4
1
1
4
1 2 5 8
2
6 10
1
9
4
1 2 3 5
1
8
1
7
печать результата до сих пор:
Спасибо за ответ ... Сначала это было д [у] Я забыл, чтобы изменить его. О том, что вы говорите, я пробовал все это уже, если я это делаю, и q [j] он дает мне значения типа «2519824», если я делаю q [j], дает значения, такие как -842150451 – luidgi27
@ luidgi27 Потому что вы пошли на бейдонские границы с 'q ++ 'измените его на' p'. –
см. Edit please – luidgi27