ÇÁ·Î±×·¡¹Ö

 3204, 1/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 : 6059     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  
3204   Ä¡Æ®¿£Áø °í¼öºÐ °è½Ç±î¿ä[1]     rjsdudals123
02/15 202
3203   ¿À·ù Á» ã¾ÆÁÖ¼¼¿ä [1]     marunim
05/30 939
3202   c¾ð¾î segmentation fault:11 ¿À·ù Áú¹®µå¸³´Ï´Ù![2]     leebk1124
05/21 2021
3201   C++ÇÔ¼ö°ü·Ã Áú¹®ÀÌ¿¡¿ë!![3]     1999dylee
05/11 1850
3200   ÆÄÀ̽ã Áö¹® µå¸³´Ï´Ù.[1]     kksh1107
04/24 1592
3199   ¸®¹ö½ÌÀÇ ¼¼¹ø¤Š ²É - ¿ª¶û-     nninni79
04/20 2293
3198   ´Þ°í³ª ¹®¼­ ½©ÄÚµå[1]     ghjk645
03/24 1616
3197 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î ¼Ò¼ö °ª     adwefq
04/29 1
3196   C¾ð¾î ¼Ò½ºÁú¹®ÀÔ´Ï´Ù![5]     an0088
01/05 5154
3195   C++ /// ºôµå ¿¡·¯ ¤Ð¤Ð[1]     guichanta
08/23 2401
3194 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î µµ¿ÍÁÖ¼¼¿ä¤Ð¤Ð     su6339
04/06 0
3193   ÇØÅ·À» ¹è¿ì·Á°íÇϴµ¥[3]     zoodem04
03/26 4183
3192   c¾ð¾î¸¦ ¹è¿ì°í½Í¾î¿ä ![7]     dwc07238
02/11 4076
3191   ½ºÅÃÀÌ ½×ÀÌ´Â ¹æÇâ¿¡ °üÇؼ­!![1]     hackxx123
12/10 3526
3190   ÇØÅ·Åø¿¡¼­ ip ¾øÀÌ Çϵ忡 ½É´Â°Å¿¡´Â ¾î¶²°Ô ÀÖÀ»±î¿ä?[2]     aowlrgmlals
11/27 4294
3189   C¾ð¾î Çϴµ¥ double ½Ç¼ö¸¦ ³ÖÀºµ¥ ÀÚ²Ù 0.0ÀÌ ³ª¿Í¿ä[2]     fatou10336
11/20 3751
3188   dumpcode.h ÀÌÇØÁ» µµ¿ÍÁÖ¼¼¿ä .[1]     cm6418
11/06 3725
3187   c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.[3]     alstn8150
10/12 3746
3186     [re] c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.     dafher
05/13 1593
3185   c¾ð¾î ¼Ò½º Áú¹® ¹¹°¡ ¹®Á¦ÀÎÁö¤Ì¤Ì¤Ì¤Ì[2]     sjjh96
05/23 4293
1 [2][3][4][5][6][7][8][9][10]..[161]

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