<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842006%2F%ED%99%94%EC%9A%94%EC%9D%BC%2Ftar%2F%EA%B9%80%EC%A4%80%EC%84%9D</id>
	<title>데블스캠프2006/화요일/tar/김준석 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842006%2F%ED%99%94%EC%9A%94%EC%9D%BC%2Ftar%2F%EA%B9%80%EC%A4%80%EC%84%9D"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842006/%ED%99%94%EC%9A%94%EC%9D%BC/tar/%EA%B9%80%EC%A4%80%EC%84%9D&amp;action=history"/>
	<updated>2026-05-15T07:42:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842006/%ED%99%94%EC%9A%94%EC%9D%BC/tar/%EA%B9%80%EC%A4%80%EC%84%9D&amp;diff=46254&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:29, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%8D%B0%EB%B8%94%EC%8A%A4%EC%BA%A0%ED%94%842006/%ED%99%94%EC%9A%94%EC%9D%BC/tar/%EA%B9%80%EC%A4%80%EC%84%9D&amp;diff=46254&amp;oldid=prev"/>
		<updated>2021-02-07T05:29:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; == tar == &lt;br /&gt;
 폴더 안에있는 tar실행 그 폴더를 tar하는것&lt;br /&gt;
&lt;br /&gt;
 #include&amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;io.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;stdlib.h&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 void main(){&lt;br /&gt;
 &lt;br /&gt;
 	_finddata_t data_dir;&lt;br /&gt;
 	int h;&lt;br /&gt;
 	int char_cpy;&lt;br /&gt;
 	FILE *read_f,*write_f;&lt;br /&gt;
 &lt;br /&gt;
 	if((write_f = fopen(&amp;quot;Debug.tar&amp;quot;,&amp;quot;wb&amp;quot;))==NULL){&lt;br /&gt;
 			printf(&amp;quot;파일이 열리지 않습니다.33&amp;quot;);&lt;br /&gt;
 			return ;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	if(!(-1==(h =_findfirst(&amp;quot;tar\*&amp;quot;,&amp;amp;amp;data_dir))))&lt;br /&gt;
 		&lt;br /&gt;
 		do&lt;br /&gt;
 		{&lt;br /&gt;
 			        if((data_dir.attrib &amp;amp;amp; _A_SUBDIR) != 0) continue;&lt;br /&gt;
 &lt;br /&gt;
 					char fileName[1024];&lt;br /&gt;
 					sprintf(fileName, &amp;quot;..\tar\%s&amp;quot;, data_dir.name);&lt;br /&gt;
 &lt;br /&gt;
 					if((read_f = fopen(fileName,&amp;quot;rb&amp;quot;))==NULL){&lt;br /&gt;
 						printf(&amp;quot;파일이 열리지 않습니다.&amp;quot;);&lt;br /&gt;
 						return ;&lt;br /&gt;
 					}	&lt;br /&gt;
 &lt;br /&gt;
 					fwrite(data_dir.name, 270, 1, write_f);&lt;br /&gt;
 &lt;br /&gt;
 					fprintf(write_f,&amp;quot;%d &amp;quot;,data_dir.size);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 					while(!(EOF == (char_cpy = fgetc(read_f) ))){&lt;br /&gt;
 							fputc(char_cpy,write_f);&lt;br /&gt;
 					}&lt;br /&gt;
 &lt;br /&gt;
 					fclose(read_f);&lt;br /&gt;
 		}while(!(_findnext(h,&amp;amp;amp;data_dir)));&lt;br /&gt;
 		&lt;br /&gt;
 	else printf(&amp;quot;There is no serching!&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     fclose(write_f);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 == untar == &lt;br /&gt;
 폴더 안에있는 tar파일을 tar폴더에 해체하는것 ( untar )&lt;br /&gt;
&lt;br /&gt;
 #include&amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;io.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;stdlib.h&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 void main(){&lt;br /&gt;
 &lt;br /&gt;
 	char fileName[270];&lt;br /&gt;
 	char fileRoot[1024];&lt;br /&gt;
 	int output_size;&lt;br /&gt;
 	int char_cpy;&lt;br /&gt;
 	FILE *read_f,*write_f;&lt;br /&gt;
 &lt;br /&gt;
 	if((read_f = fopen(&amp;quot;..\devil25_tar\Debug.tar&amp;quot;,&amp;quot;rb&amp;quot;))==NULL){&lt;br /&gt;
 			printf(&amp;quot;파일이 열리지 않습니다.(에러1)\n&amp;quot;);&lt;br /&gt;
 			return ;&lt;br /&gt;
 	}&lt;br /&gt;
 		do&lt;br /&gt;
 		{			        &lt;br /&gt;
 			if (0 == fread(fileName, 270,1, read_f)) break;&lt;br /&gt;
 					&lt;br /&gt;
 			sprintf(fileRoot, &amp;quot;..\devil26_untar\untar\%s&amp;quot;, fileName);&lt;br /&gt;
 &lt;br /&gt;
 			if((write_f = fopen(fileRoot,&amp;quot;wb&amp;quot;))==NULL)&lt;br /&gt;
 			{&lt;br /&gt;
 				printf(&amp;quot;파일이 열리지 않습니다.(에러2)\n&amp;quot;);&lt;br /&gt;
 				return ;&lt;br /&gt;
 			}	&lt;br /&gt;
 &lt;br /&gt;
 			fscanf(read_f,&amp;quot;%d &amp;quot;,&amp;amp;amp;output_size);&lt;br /&gt;
 &lt;br /&gt;
 			while(output_size--)&lt;br /&gt;
 			{&lt;br /&gt;
 				char_cpy = fgetc(read_f) ;&lt;br /&gt;
 				fputc(char_cpy,write_f);&lt;br /&gt;
 			}&lt;br /&gt;
 &lt;br /&gt;
 			fclose(write_f);&lt;br /&gt;
 		}while(1);&lt;br /&gt;
 &lt;br /&gt;
 	fclose(read_f);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 == tar&amp;amp;untar == &lt;br /&gt;
&lt;br /&gt;
 tar할 파일을 입력받고 그 파일이 폴더일경우 하위 파일과 디렉토리도 tar하는것&lt;br /&gt;
* 문제점 &lt;br /&gt;
# tar할때 빈폴더는 tar가 되지 않는다&lt;br /&gt;
# untar를 할경우 풀어놓을 폴더가 없을경우 에러&lt;br /&gt;
&lt;br /&gt;
 #include&amp;amp;lt;iostream&amp;amp;gt; &lt;br /&gt;
 #include&amp;amp;lt;stdio.h&amp;amp;gt; &lt;br /&gt;
 #include&amp;amp;lt;io.h&amp;amp;gt; &lt;br /&gt;
 #include&amp;amp;lt;stdlib.h&amp;amp;gt; &lt;br /&gt;
 #include&amp;amp;lt;FCNTL.H&amp;amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 using namespace std; &lt;br /&gt;
 &lt;br /&gt;
 FILE *archive, *item; &lt;br /&gt;
 &lt;br /&gt;
 void check_dir(char *dir); &lt;br /&gt;
 int tar(char *file); &lt;br /&gt;
 int untar(char *file); &lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) &lt;br /&gt;
 { &lt;br /&gt;
      &lt;br /&gt;
     int h; &lt;br /&gt;
     _finddata_t data_dir; &lt;br /&gt;
      &lt;br /&gt;
     if(argc==2) untar(argv[1]); &lt;br /&gt;
 &lt;br /&gt;
     else if(argc&amp;amp;gt;2)    // tar &lt;br /&gt;
     { &lt;br /&gt;
          &lt;br /&gt;
         if((archive = fopen(argv[1],&amp;quot;wb&amp;quot;))==NULL) &lt;br /&gt;
         { &lt;br /&gt;
             printf(&amp;quot;아카이브를 생성할 수 없습니다.&amp;quot;); &lt;br /&gt;
             return 0; &lt;br /&gt;
         } &lt;br /&gt;
 &lt;br /&gt;
         for(int i = 2; i&amp;amp;lt;argc;i++) &lt;br /&gt;
         { &lt;br /&gt;
             if(argv[1]==argv[i]) continue; // 같은 파일인지 검사 &lt;br /&gt;
              &lt;br /&gt;
             if(!(-1==(h =_findfirst(argv[i],&amp;amp;amp;data_dir)))) &lt;br /&gt;
             { &lt;br /&gt;
                              &lt;br /&gt;
                 // argv[i]가 디렉토리인지 체크 &lt;br /&gt;
                 // 디렉토리이면 하위 검사 &lt;br /&gt;
 &lt;br /&gt;
                 if((data_dir.attrib &amp;amp;amp; _A_SUBDIR) != 0)  check_dir(argv[i]);  &lt;br /&gt;
 &lt;br /&gt;
                 else tar(argv[i]); //tar로 넘겨준다 이름과 파일 주소제어포인터를 &lt;br /&gt;
             } &lt;br /&gt;
 &lt;br /&gt;
         } &lt;br /&gt;
         fclose(archive); &lt;br /&gt;
     } &lt;br /&gt;
 &lt;br /&gt;
     else cout &amp;amp;lt;&amp;amp;lt; &amp;quot;devil27_tar_untar [아카이브명] [압축할파일리스트]... 형식으로 해주세요.\n&amp;quot; &amp;amp;lt;&amp;amp;lt; endl;  &lt;br /&gt;
     &lt;br /&gt;
    return 0; &lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void check_dir(char *dir) &lt;br /&gt;
 { &lt;br /&gt;
     _finddata_t data_dir; &lt;br /&gt;
     char path[512]; &lt;br /&gt;
     int find_bool; &lt;br /&gt;
     char dir_ex[512]; &lt;br /&gt;
 &lt;br /&gt;
     strcpy(dir_ex, dir); &lt;br /&gt;
     strcat(dir_ex, &amp;quot;\*.*&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
     if(!(-1==(find_bool =_findfirst(dir_ex, &amp;amp;amp;data_dir)))) &lt;br /&gt;
     { &lt;br /&gt;
         do &lt;br /&gt;
         { &lt;br /&gt;
             sprintf(path, &amp;quot;%s\%s&amp;quot;, dir , data_dir.name); &lt;br /&gt;
             if(!strcmp(data_dir.name, &amp;quot;.&amp;quot;) || !strcmp(data_dir.name, &amp;quot;..&amp;quot;)) continue; &lt;br /&gt;
             else if(data_dir.attrib &amp;amp;amp; _A_SUBDIR) check_dir(path); &lt;br /&gt;
             else tar(path); &lt;br /&gt;
         } while(!(_findnext(find_bool, &amp;amp;amp;data_dir))); &lt;br /&gt;
     } &lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 int tar(char *file) &lt;br /&gt;
 { &lt;br /&gt;
     char buffer[260]; &lt;br /&gt;
     long size; &lt;br /&gt;
 &lt;br /&gt;
     if((item = fopen(file,&amp;quot;rb&amp;quot;))==NULL) &lt;br /&gt;
     { &lt;br /&gt;
         printf(&amp;quot;아카이브를 생성할 파일을 열 수 없습니다.\n&amp;quot;); &lt;br /&gt;
         return 0; &lt;br /&gt;
     } &lt;br /&gt;
     size = _filelength(_fileno(item)); &lt;br /&gt;
 &lt;br /&gt;
     fwrite(file, sizeof(char), 512, archive); &lt;br /&gt;
     fprintf(archive, &amp;quot;%d &amp;quot;, size); &lt;br /&gt;
 &lt;br /&gt;
      &lt;br /&gt;
     while(1) &lt;br /&gt;
     { &lt;br /&gt;
         if(!fread(buffer, 256, 1, item)) break;         &lt;br /&gt;
         fwrite(buffer, 256, 1, archive); &lt;br /&gt;
     } &lt;br /&gt;
      &lt;br /&gt;
 &lt;br /&gt;
     fclose(item); &lt;br /&gt;
 &lt;br /&gt;
     return 0; &lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 int untar(char *file) &lt;br /&gt;
 { &lt;br /&gt;
     char buffer[260]; &lt;br /&gt;
     int size; &lt;br /&gt;
     char path[512]; &lt;br /&gt;
      &lt;br /&gt;
     if((archive = fopen(file,&amp;quot;rb&amp;quot;))==NULL) &lt;br /&gt;
     { &lt;br /&gt;
         printf(&amp;quot;아카이브 파일을 열 수 없습니다.\n&amp;quot;); &lt;br /&gt;
         return 0; &lt;br /&gt;
     } &lt;br /&gt;
 &lt;br /&gt;
     while(!feof(archive)) &lt;br /&gt;
     { &lt;br /&gt;
         if(!fread(path, 512, 1, archive)) break; &lt;br /&gt;
 &lt;br /&gt;
         if((item =fopen(path,&amp;quot;wb&amp;quot;))==NULL) &lt;br /&gt;
         { &lt;br /&gt;
             printf(&amp;quot;파일을 생성할 수 없습니다.\n&amp;quot;); &lt;br /&gt;
             return 0; &lt;br /&gt;
         } &lt;br /&gt;
 &lt;br /&gt;
         fscanf(archive, &amp;quot;%d &amp;quot;, &amp;amp;amp;size); &lt;br /&gt;
          &lt;br /&gt;
         while(1) &lt;br /&gt;
         { &lt;br /&gt;
             if(!fread(buffer, 256, 1, archive)) break; &lt;br /&gt;
             fwrite(buffer, 256, 1, item); &lt;br /&gt;
         } &lt;br /&gt;
          &lt;br /&gt;
 &lt;br /&gt;
         _chsize(_fileno(item), size); &lt;br /&gt;
 &lt;br /&gt;
         fclose(item); &lt;br /&gt;
     } &lt;br /&gt;
 &lt;br /&gt;
     fclose(archive); &lt;br /&gt;
 &lt;br /&gt;
     return 0; &lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
[[데블스캠프2006/화요일/tar]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>