ÇÁ·Î±×·¡¹Ö

 3206, 8/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   hehesk
   cp¸í·É¾î ±¸ÇöÁßÀä À߸øµÈÁ¡Á» ÁöÀûÇØÁÖ¼¼¿ä

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=2680 [º¹»ç]


ÄÄÆÄÀÏÀº µÇ´Âµ¥
µ¿ÀÛÀ» ¾ÈÇϳ׿ä..
À̸®Àú¸® ÂüÁ¶Çϸ鼭 ¸¸µé¾îº»°Çµ¥
µ¿ÀÛÀ» ¾ÈÇؼ­¿ä ^^
µµ¿òÁ» ºÎŹµå¸³´Ï´Ù

#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

#define PERM        0644
#define BS        512

void f_err(int erno) //ÆÄÀÏÀ» µ¤À» °æ¿ì ±âÁ¸ ÆÄÀÏ¿¡ ´ëÇÑ °ËÁõ
{
        switch(erno)
        {
                case ENOENT : printf("ÇØ´ç ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n"); exit(0);
                case EACCES : printf("Á¢±ÙÀÌ Çã¿ëµÈ ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.\n"); exit(0);
                case EROFS : printf("ÀбâÀü¿ë ÆÄÀÏÀÔ´Ï´Ù.\n"); exit(0);
                default : printf("¾Ë¼ö ¾ø´Â ¿À·ùÀÔ´Ï´Ù.\n"); break;
        }
}

void fileexception(int argcn, char *arg1, char *arg2) //¿¹¿Üó¸® ÇÔ¼ö
{
        if(argcn < 4) { printf("´ë»óÆÄÀÏÀÌ ÀԷµÇÁö ¾Ê¾Ò½À´Ï´Ù.\n"); exit(0); }
        if(access(arg1,F_OK) != 0) { printf("¿øº» ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n"); exit(0); }
        if(strcmp(arg1,arg2) == 0) { printf("¿øº»°ú ´ë»óÀÌ °°½À´Ï´Ù.\n"); exit(0); }
}

int copyFile(char *in_f, char *out_f) //ÆÄÀÏ º¹»ç ÇÔ¼ö
{
        int infile, outfile;
        int read_o;
        char buf[BS];

        if ( ( infile = open ( in_f, O_RDONLY) ) == -1 )
                return -1;
        if ( ( outfile = open (  out_f, O_WRONLY | O_CREAT | O_TRUNC, PERM) ) == -1 )
        {
                close (infile);
                return -2;
        }

        while ( (infile = read(infile,buf,BS) ) > 0)
        {
                if ( write(outfile, buf, read_o) < read_o)
                {
                        close(infile);
                        close(outfile);
                        return -3;                        // ¾²±â¿À·ù
                }
        }
                close(infile);
        close(outfile);
        if ( read_o == -1)
                return -4;                                // ¸¶Áö¸· Àб⿡¼­ ¿À·ù
        else
                return 0;
}

int appendFile(char *in_f, char *out_f) //ÆÄÀÏ º¹»ç ÇÔ¼ö(append)
{
        int infile, outfile;
        int read_o;
        char buf[BS];

        if ( ( infile = open ( in_f, O_RDONLY) ) == -1 )
                return -1;
        if ( ( outfile = open (  out_f, O_WRONLY | O_APPEND, PERM) ) == -1 )
        {
                close (infile);
                return -2;
        }

        while ( (infile = read(infile,buf,BS) ) > 0)
        {
                if ( write(outfile, buf, read_o) < read_o)
                {
                        close(infile);
                        close(outfile);
                        return -3;                        // ¾²±â¿À·ù
                }
        }
                close(infile);
        close(outfile);
        if ( read_o == -1)
                return -4;                                // ¸¶Áö¸· Àб⿡¼­ ¿À·ù
        else
                return 0;
}

///////////////* main ½ÃÀÛ *///////////////////
void main ( int argc, char* argv[] )
{
        char op1 = 'x';
        char op2 = 'x';
        
        if ( (op1 = getopt(argc, argv, "if") ) != -1 )
        {
                switch (op1)
                {
                case 'f' :
                        fileexception(argc, argv[2], argv[3]);
                        copyFile(argv[2],argv[3]);        break;
      
                 case '?' :
                            printf("¾Ë¼ö¾ø´Â ¿É¼ÇÀÔ´Ï´Ù.");         break;

                if (access(argv[3],F_OK) == 0)
                {
                         while( op2 == 'y' || op2 == 'n'|| op2 == 'a')
                        {
                            printf("´ë»ó ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. µ¤¾î¾²½Ã·Á¸é y, Ãß°¡ÇϽ÷Á¸é a Ãë¼Ò´Â nÀ» ´©¸£¼¼¿ä :");
                            op2 = getchar();
                                switch (op2)
                                {
                                case 'y' : copyFile(argv[2] , argv[3]);        break;
                                case 'a' : appendFile(argv[2], argv[3]);        break;
                                case 'n' : exit(0);
                                default :        printf("À߸øÀÔ·Â\n");
                                }
                        }                                
                default :        printf("À߸øÀÔ·Â\n");
                }
                }
        }
}


  Hit : 6052     Date : 2010/09/16 03:39



    
gamja read_o°¡ ÀоîµéÀÎ ¹®ÀÚÀÇ °¹¼ö¸¦ ÀúÀåÇÏ½Ç ¸ñÀûÀÌ ¸Â´Ù¸é
while ( (infile = read(infile,buf,BS) ) > 0) À̺κÐÀ»
while ( (read_o = read(infile,buf,BS)) > 0) ÀÌ·¸°Ô ÁÖ¼Å¾ß µ¥ÀÌÅÍ°¡ 512 ¹ÙÀÌÆ®°¡ ³Ñ´Â ÆÄÀÏÀ» °è¼ÓÇؼ­ Àо°¥ ¼ö Àֳ׿ä(copyFile°ú appendFile µÎ ÇÔ¼ö ¸ðµÎ °íÄ¡¼Å¾ß ÇÒ µí ½Í³×¿ä)

while( op2 == 'y' || op2 == 'n'|| op2 == 'a') ÀÌ ¹Ýº¹¹® À§ÂÊ¿¡¼­´Â op2¿¡ °ªÀ» ÀԷ¹޴ ºÎºÐÀÌ º¸ÀÌÁö ¾Ê³×¿ä °í·Î ÀÌ ¹Ýº¹¹®ÀÌ ½ÇÇàµÇÁö ¾ÊÀ»µí Çϳ׿ä
2010/09/17  
3066   c¾ð¾î ±¸Á¶Ã¼ ¹è¿­ Æ÷ÀÎÅÍ·Î ÇÔ¼ö·Î Àü´ÞÇϴµ¥...[3]     my10045139
12/13 6080
3065   [VC] Help -> Index -> MSDNÄ÷º¼ÇÀÌ ¾ø½À´Ï´Ù.     ¿µ¿øÇÑ°øºÎ
07/02 6073
3064   ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¸Ó ÀÚ°ÝÁõ ¸»Àä[6]     gkswls123
03/12 6068
3063   µð¹ö±ëÀ̶õ? ½ßÃʺ¸¶ó ¤Ð¤Ð [3]     milkily
10/12 6051
  cp¸í·É¾î ±¸ÇöÁßÀä À߸øµÈÁ¡Á» ÁöÀûÇØÁÖ¼¼¿ä[1]     hehesk
09/16 6051
3061   MFC ¸ÅÅ©·Î ¸¸µé±â Áú¹®![1]     musalhk
02/15 6050
3060   win 32 api ·Î ¹ÂÁ÷Ç÷¹ÀÌ¾î ¸¸µé±â     khfs200
05/25 6037
3059   ¾î¼Àºí¸®¾î, ±â°è¾î ¹è¿öº¸·Á°íÇϴµ¥¿ä ¤Ð[6]     hygasyde
01/24 6036
3058   À©µµ¿ì ·Î¿ì ¼ÒÄÏ °ü·Ã Áú¹®ÀÔ´Ï´Ù..[2]     ¹Ùº¼ÀÌ
05/21 5977
3057   [c¾ð¾î] Å°,³ªÀÌ,¼ºº°ÀÔ·ÂÇϸé ÇÑÁÙ·Î ¶ß°ÔÇÒ·Á°íÇϴµ¥ ,, ¿¡·¯°¡..[3]     SKTCTO
03/25 5954
3056   [c¾ð¾î]vc 2010 error [c++ ÇÁ·ÎÁ§Æ®¿¡ intellisense ¹× °Ë»ö Á¤º¸ »ç¿ë ºÒ°¡]     goldbear564
01/20 5949
3055     [re] c 몆°¡Áö ¸í·É¾îÁ» Áú¹®ÀÌ¿ä!![1]     indra
09/05 5940
3054     [re] C¾ð¾î ¸»Àä..^^;     ¼ÒÀ¯
09/12 5916
3053   ¾î¼Àºí¸®...[7]     µÎ·ç¹¶¼ú
02/28 5913
3052   ¸®´ª½º ³×Æ®¿öÅ© ÇÁ·Î±×·¥ ¼Ò½ºÄÚµå ±¸ÇÏ°í ½ÍÀºµ¥¿ä.[1]     aiurchar
09/16 5880
3051   [ASP]ASP¿¡¼­ rs.open¿¡¼­ ¿À·ù°¡ ³ª³×¿ä[2]     Çܺ¸Ä­²ÊÂîÂÞ
12/03 5868
3050   c ‘p°¡Áö ¸í·É¾îÁ» Áú¹®ÀÌ¿ä!![1]     darkstar12
09/04 5823
3049   C¾ð¾î ¸»Àä..^^;[1]     canrose
09/06 5800
3048     [re] ÆäÀÌÁö ·Îµù½Ã Áñ°Üã±â ÀÚµ¿À¸·Î Ãß°¡µÇ±âÁ» °¡¸£ÃÄ ÁÖ¼¼¿ä     ¼ÒÀ¯
09/13 5791
3047     [re] ¸®´ª½º»ó DES¾Ë°í¸®Áò(C·Î ±¸¼º)..¾î¶»°Ô ÄÄÆÄÀÏ ÇÏ´ÂÁö...[4]     indra
10/06 5770
[1][2][3][4][5][6][7] 8 [9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org