2016-06-02 2 views
0

내 프로그램을 실행할 수 없습니다. 오류 메시지가 나타납니다. 알 수없는 유형 이름 'node'i codeblocks 13.12 in lubuntu 16.04.
참고 : 컴파일러에서 추가 설정이 보이지 않습니다. "모두 선택 취소되었습니다."또한 lubuntu 16.04에 대한 좋은 IDE를 찾고 있습니다.왜이 프로그램을 실행하려고하면

#include <stdio.h> 

struct node { 
    int data; 
    struct node* next; 
}; 

struct node* head = NULL; 

void insert() 
{ 
if(head = NULL) { 
    node* temp = (node*)malloc(sizeof(struct node)); 
    temp -> data = 2; 
    temp -> next = NULL; 
    head = temp; 
} 

void print() { 

    struct node* temp = head; 
    printf("list is: "); 
    while (temp != NULL) { 

     printf("%d",temp->data); 
     temp = temp->next; 
    } 
    printf("\n"); 
} 


int main() { 

head = NULL; 
printf("How Many Numbers?\n"); 
int a ,b ,c; 
scanf("%d" , &b); 
for(a = 0;i<b;a++) { 
    printf("Enter the number \n"); 
    scanf("%d",&b); 
    Insert(b); 
    print(); 
return 0; 
} 
+1

을 컴파일합니다. 정말로 코멘트 인 답변을 게시하지 말고 다른 사용자의 답변을 편집하여 코멘트를 추가하지 마십시오. – dbush

+1

질문을 완전히 변경하는 변경 사항을 게시하지 마십시오. 그렇게하면 기존 답변이 무효화됩니다. 가장 최근의 수정 사항을 롤백했습니다. 원래 질문에 답변 한 경우 대답 중 하나를 수락하고 새 질문을 게시하십시오. – dbush

+0

이미 편집 내용을 두 번 되돌 렸습니다. 다른 질문에 대한 의견을 남겼습니다. 그것을 읽지 말아야하는 이유와 위의 두 가지 의견을 읽어주십시오. 내가 원래 질문에 대답했다면, * 대답을 받아 들여 새로운 질문을 게시하십시오. * – 2501

답변

3

당신은 그 유형의 이름이기 때문에 다른 사람이 struct node를 사용해야 별명을 작성하는 데 typedef해야합니다.

typedef struct node node; 

please don't cast the return value of malloc() in C. 할당은 더 나은 다음과 같이 기록됩니다

node* temp = malloc(sizeof *temp); 
3

컴파일러가 명시된 바와 같이 오류가 라인 13에 있습니다 : 다음과 같이

node* temp = (node*)malloc(sizeof(struct node)); 

구조 유형은 항상 struct 키워드 접두어해야합니다

// also, don't cast the return value of malloc 
struct node* temp = malloc(sizeof(struct node)); 

그러나 코드의 몇 가지 문제 중 첫 번째 일뿐입니다.

  • 위의 줄은 if 조건의 경우 (head = NULL)입니다. 이것은 과제가 아니라 비교입니다. 대신 (head == NULL)이어야합니다.
  • 기능 끝 부분에 닫는 중괄호가 없습니다. insert.
  • main에서 i은 정의되지 않습니다. 또한 c은 사용되지 않습니다. 따라서 ci으로 변경하십시오.
  • main에서 insert 대신 Insert을 부르고 있습니다.
  • 당신은 malloc의 프로토 타입을 얻을 #include <stdlib.h> 필요 main
  • for 블록 없음 닫는 중괄호.

그 수정하고, 당신이 의견을 질문이나 응답 할 답변 하나 하나에 댓글을 남기려면 프로그램이

+0

이것은 또 다른 문제입니다. 왜 그 일이 일어 났는지 나는 논리를 이해한다. – jaindoe

관련 문제