블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아

카테고리

분류 전체보기 (176)
잡담 (1)
IT 기기-리뷰&뉴스 (7)
리뷰 - 도서 (1)
리뷰 - 영상 (0)
리뷰 - 그림/음악 (1)
내장형 하드웨어 (163)
Total630,101
Today180
Yesterday195
- 반복문을 이용한 연결리스트의 작성

/* 데이터 파일로부터 데이터를 읽어와서 연결리스트를 작성하는 프로그램. 데이터 파일은 문자 '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;
}

⇒ 출력 결과         

 

Posted by 동화다아아

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함