C언어 - 연결리스트
/* 데이터 파일로부터 데이터를 읽어와서 연결리스트를 작성하는 프로그램. 데이터 파일은 문자 'a', 'b', 'c'로 구성되어 있다고 가정한다. */
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;
struct node *next;
}NODE;
int main()
{
FILE *fp;
NODE *temp = NULL, *list = NULL;
char ch;
if((fp = fopen("d10-5.dat", "r")) == NULL)
{
printf("file open error!\n");
return -100;
}
fscanf(fp, "%c", &ch);
while(!feof(fp))
{
temp = (NODE *)malloc(sizeof(NODE));
temp -> data = ch;
temp -> next = list;
list = temp;
fscanf(fp, "%c", &ch);
}
fclose(fp);
temp = list;
while(temp != NULL)
{
printf("%5c", temp -> data);
temp = temp -> next;
}
printf("\n");
return 0;
}
#include<stdio.h>
#include<fcntl.h> //o_flag
#include<sys/types.h> // pmode
#include<sys/stat.h> // pmode
#include"NODE.h"
int main()
{
int ifd;
int iCount;
NODE sttemp[5];
ifd = open("a.dat", O_CREAT|O_WRONLY|O_TRUNC);
if(ifd < 0)
{
printf("Can't open file a.dat\n");
return -100;
}
for(iCount = 0; iCount < 5; ++iCount)
{
printf("sttemp값을 입력하세요: ");
scanf("%d", &sttemp[iCount].iNum);
write(ifd, &sttemp[iCount], sizeof(NODE));
}
printf("sttemp 크기 %d\n", sizeof(sttemp));
close(ifd);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include"NODE.h"
int main()
{
int ifd;
int iret;
int iCount;
NODE *stpNode;
NODE *stpHead;
ifd = open("a.dat", O_RDONLY);
if(ifd < 0)
{
printf("Can't open file a.dat\n");
return -100;
}
stpNode = (NODE *)malloc(sizeof(NODE));
if(stpNode == NULL)
{
free(stpNode);
printf("Can't stpNode\n");
}
iret = read(ifd, stpNode, sizeof(NODE));
stpNode -> next = 0;
if(iret == 0)
{
printf("파일에 내용이 없습니다.\n");
return -1;
}
else
{
stpHead = stpNode;
}
///////////////////////////////////////////
for(iCount = 0; iCount <4; ++iCount)
{
stpNode = (NODE*)malloc(sizeof(NODE));
if(stpNode == NULL)
{
free(stpNode);
printf("Can't stpnode\n");
}
iret = read(ifd, stpNode, sizeof(NODE));
//stpNode -> next = 0;
if(iret == 0)
{
printf("파일에 내용이 없습니다.\n");
return -1;
}
else
{
stpNode -> next = stpHead;
stpHead = stpNode;
}
}
close(ifd);
while(NULL != stpHead)
{
printf("%d -> ", stpHead->iNum);
stpHead = stpHead -> next;
}
printf("\n");
return 0;
}
'내장형 하드웨어 > C언어' 카테고리의 다른 글
C언어 - 저장클래스(지속기간, auto, register, static, extern) (0) | 2011.07.19 |
---|---|
C언어 - 연결리스트 (0) | 2011.07.18 |
C언어 - 연결리스트의 구조, 초기화, malloc() (0) | 2011.07.13 |
C언어 - double linked list, malloc(), bcopy(), memcpy() (0) | 2011.07.13 |
C언어 - 연결리스트2 (0) | 2011.07.11 |