[C++ 언어-기초실습-22] system()+cmd 명령으로 파일 생성하기

in kr-dev •  5 years ago  (edited)

[C++ 언어-기초실습-22] system()+cmd 명령으로 파일 생성하기



오늘은 재밌는 실습을 하도록 하겠습니다. 이 실습은 별거 아닌 것 같지만 주의해서 실습해야 하는 중요한 실습입니다. 잘못하면 나쁜쪽으로 빠질 수 있는 입문 내용이기 때문이지요. 실습은 특정 내용을 특정 확장자로 글을 쓰는 실습입니다.

1. 특정 확장자로 글 쓰기


system("echo 문자열 >출력이름.확장자");

위와 같은 형태로 문자열을 출력이름으로 쓰게 됩니다. 보면 출력이름 앞에 기호(>)가 있는데 이부분을 간단히 설명합니다.

> text.txt
>> text.txt

이렇게 두가지 형태를 알아두세요. 한개짜리는 text라는 파일이 없으면 새로 text 파일을 만들고 있으면 기존의 text 파일에 덮어 쓰기를 하는 명령입니다. 두개짜리는 text라는 파일이 있으면 기존의 내용을 그대로 두고 이여서 새로운 내용을 파일에 추가하는 방식입니다. 즉, 한개는 파일 생성 때 쓰고 두개는 여러줄의 내용을 파일에 쓸 때 사용하시면 됩니다.

2. 실습


  • 조건 : txt 파일을 생성하고 txt 파일에 쓴 글을 메모장으로 열어라

새로운 텍스트 파일을 생성하고 그곳에 여러줄의 글을 쓰고 그 글을 cmd 명령으로 자동으로 확인해보는 실습입니다.

[전체소스]

#include <iostream>
#include <stdlib.h>

using namespace std;


int main(int argc, char** argv) {

    system("echo 안녕하세요 > text.txt");
    system("echo 나는 스팀잇에 올릴  Post를 작성중입니다. >> text.txt");
    
    system("text.txt");
    
    return 0;
}

[결과]
b1.jpg

마무리


오늘의 내용은 주의하셔야 합니다. 고전 바이러스의 기초가 되는 명령입니다. 이런 바이러스 체험은 아마 거의 없을 거에요. 윈도우 환경에서 특정 메세지와 함께 무한으로 텍스트 파일이 생성되고 무한으로 메모장이 생성되는 바이러스를 기억하시는 분들도 있고 그런 경험이 없는 분들이 있을 거에요. 방금 전 코딩에 while()문 같은 무한 루프문을 쓰고 그안에 카운트로 일련번호나 특정 랜덤 숫자나 기호 값으로 파일을 생성하면 어떻게 될까요. 컴퓨터는 어떻게 될까요. 계속적으로 메모장 생성의 바이러스가 되겠죠. 실습에서는 간단히 하나의 파일을 생성하고 하나의 메모장을 열었지만 이걸 루프로 돌리면 문제가 되겠죠.

나쁜쪽으로 이용하면 문제지만 이 원리를 좋은 쪽으로 사용하면 재밌는 실습도 할 수 있습니다. 파일을 생성하고 파일에 원하는 글을 쓸 수 있다면 많은 것을 할 수 있습니다. 예를 들면 프로그램언어 C 확장자로 저장하고 cmd 명령으로 해당 파일을 컴파일하여 실행 파일(exe)을 만들 수 있습니다. 만든 실행 파일을 자동을 실행 시킬 수 있습니다. 이 과정을 한번 상상해보세요. 자기 스스로 코딩하고 그 코딩을 실행 시킬 수 있다는 것은 뭘 의미 할 까요. 자기 스스로 학습을 할 수 있다는 의미와 같습니다. 즉, 현재 상황에 맞게 코딩을 했을 때 그 코딩 안에서 체크나 비교를 통해서 조정을 하여 재 코딩하여 프로그램을 다시 만들 수 있다는 것을 의미 합니다. 스스로 코딩하고 프로그램을 만들 수 있다는 것을 의미하는 것이죠. 재밌는 원리로 이용 가능하겠죠.

추가로, 파일 생성으로 copy con도 있긴 하지만 그것 한번 구글 검색을 통해 한번 해보세요.


Sponsored ( Powered by dclick )

dclick-imagead

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

Thank you