Мне было интересно, какая функция мне понадобится, чтобы скопировать данные указателя typedef struct
в массив typedef struct
.Программа отлично работает с VS2012, но встречается Ошибка при использовании Tiny C
typedef struct nodebase{
char company[254];
int counter;
int rows;
int column;
struct nodebase *next;
}data;
Я знаю, что я мог бы использовать memcpy
для char company
, но как насчет для значений Integer?
Я хочу сделать что-то вроде:
int main()
{
data *p;
data item[] = {0};
int counter = 0;
/*Calling for the roster file to scan and store the data into `data *p` using fscanf*/
/*Code for singly linked-list*/
counter++ //This happens everytime the program has scanned 4 variables in the file
item[counter] = p; //This definitely is now working..
Отредактировано: Я теперь с помощью memcpy
и предыдущая проблема была решена.
(Спасибо за ваши ответы!)
Теперь я сталкиваясь с новой проблемой, и что в моем односвязном-списке.
По-видимому, в файле реестра имеется 12 «счетчик» (это значит, что в файле реестра есть 48 переменных для чтения и хранения данных).
//Code for Singly Linked-list
int main()
{
data *p;
data *head;
data *tail;
data item[] = {0};
FILE *f;
int counter = 0;
head = NULL;
tail = NULL;
while(!feoe(f)
{
p = malloc(sizeof(data));
/*Opens the roster file and Read & Store the data in the file to the respective variables inthe `typedef struct`.*/
if(head ==NULL)
{
head = p;
}
else
{
tail->next = p;
}
tail = p;
if(head!=NULL)
{
do{
printf(":||%s||: Name",p->name); //Just to check if the linked list is working
memcpy(&item[counter], p, sizeof(data*));
counter++;
p = p->next;
p = NULL;
}while(p!=NULL);
}free(p);
}
}
Проблема: При печати каждых имен 12 «наборов» из файла реестра, программа выводит первые 10 комплектов правильно, то он вдруг перестает работать. (С использованием Tiny C в Windows)
И, что самое главное, когда я компилирую этот файл с VS2012, он отлично работает.
Этот код не имеет смысла. У вас есть массив без размера? У вас есть указатель, который указывает на отсутствие памяти, и вы пытаетесь записать массив из своих границ. Он даже компилирует? –
@TonyTheLion По-видимому, он может быть скомпилирован с использованием VS2012. Можете ли вы сказать мне, есть ли способ использовать массив, размер которого еще не назначен? –