ошибка с функцией, возвращающей структуру - PullRequest
0 голосов
/ 20 октября 2011

Вот что я пытаюсь сделать:

Я работал над кодом, в котором я создал структуру (жестко запрограммированную в main). Затем я хочу распределить пространство под две структуры (попробую использовать функции). Затем скопируйте все данные в первой структуре во вторую структуру и напечатайте новую структуру.

Ошибки происходят: Я не понимаю, что означает эта ошибка.

pointer.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
pointer.c:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token



#include <stdio.h>
#include <stdlib.h>
#include "pointer.h"
int rec = 0;

строка 7

struct emp *create(int record){
emp *new_employees = malloc(sizeof(info) * (record+1));

return new_employees;   
}

строка 13

struct emp *copy(emp *data, int record){
emp *new_employee = create(record+1);
int i;
for(i = 0; i<record;i++){
    new_employee.first = data.first;
    new_employee.last = data.last;
    new_employee.start_date = data.start_date;
    new_employess.sal = data.sal;
    data++;
}
return new_employee;
}


int main(void){
struct info employees;
employees.first = "FIRST";
employees.last = "LAST";
employees.start_date = "June-20th-2006";
employees.sal = 55555.55;
rec = rec+1;



}

заголовочный файл:

#include <string.h>
struct info {
char *first;
char *last;
char *start_date;
float sal;
} emp;

Ответы [ 4 ]

2 голосов
/ 20 октября 2011

info не является типом, а emp является просто переменной типа struct info. Либо добавьте typedef (если вы хотите emp как тип):

typedef struct info {
    char *first;
    char *last;
    char *start_date;
    float sal;
} emp;

... или добавьте ключевое слово struct.

struct info *create(int record);
struct info *copy(emp *data, int record);
0 голосов
/ 20 октября 2011

Вы должны определить функции следующим образом:

struct emp *create()
struct emp *copy()

Или определите структуры как тип данных, используя typedef.

0 голосов
/ 20 октября 2011
emp *new_employees = malloc(sizeof(info) * (record+1));

Имя типа struct info, а не info.

Но лучший способ написать это:

emp * new_employees = malloc ((запись+1) * sizeof * emp);

0 голосов
/ 20 октября 2011

emp - это переменная, info - это тип. Таким образом, вы должны использовать info вместо emp в прототипе вашей функции и тела тоже.

Как говорили другие, отсутствует typedef или struct info вместо emp. Я пропустил это:)

ИМХО, это две разные ошибки в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...