Я пытался сделать эту программу на некоторое время, но у меня все еще есть большие проблемы с распределением памяти. Основная часть этой части работы состоит в том, что она должна читать строку из первой строки файла, затем две цифры из второй строки, а затем три столбчатых вектора, каждая из которых имеет в три раза больше членов, чем разница между двумя считанными числами ,Проблема с распределением динамической памяти
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void read(char **banda, int *s, int *sf, int **vs, char **vcs, char **vd)
{
FILE *fin;
int i;
fin = fopen("date.in", "r");
*banda = (char*)malloc(50*sizeof(char));
fgets(*banda, 50, fin);
fscanf(fin, "%d", s);
fscanf(fin, "%d", sf);
fseek(fin, 1, SEEK_CUR);
int l = 3* ((*s)-(*sf));
*vcs = (char*) malloc(l * sizeof(char));
*vd = (char*) malloc(l *sizeof(char));
*vs = (int*) malloc(l * sizeof(int));
for(i = 0; i< l ; i++)
{
fscanf(fin, "%d", vs[i]);
fscanf(fin, " %c", vcs[i]);
fscanf(fin, " %c", vd[i]);
fseek(fin, 1 , SEEK_CUR);
}
fclose(fin);
}
int main()
{
char *banda;
int i;
int s, sf;
char *vcs;
char *vd;
int *vs;
read(&banda, &s, &sf, &vs, &vcs, &vd);
for(i = 0; i < strlen(banda) ; i++)
{
printf("%c", banda[i]);
}
printf("%d %d\n", s, sf);
for(i = 0; i < 3*(s-sf) ; i++)
{
printf("%d %c %c\n", vs[i], vcs[i], vd[i]);
}
}
Example input:
Helen
2 1
1 H A
2 B C
5 K I
Однако я не могу выделить память для него. Если я пройду мимо i = 0 (как первая позиция в массивах), программа покажет мне опрятную «ошибку сегментации». Однако, если я только иду и пишу в массиве ONE значение для каждого, это не сбой. Там что-то я серьезно не хватает, и я просто не могу понять это.
Вы выделяете 'vcs' как' символ * VCS; '(один указатель символов), но попробовать использовать его как 'char *' массив в 'read' (массив' char * ') –