쉽게 풀어쓴 C 프로그래밍

Similar documents
쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

14장 파일

8장 문자열

PowerPoint 프레젠테이션

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

12-file.key

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

PowerPoint Presentation

17장 클래스와 메소드

PowerPoint 프레젠테이션

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

14장 파일

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

중간고사

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

BMP 파일 처리

Microsoft PowerPoint - Java7.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 웹 연동 기술.pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

본 강의에 들어가기 전

Microsoft PowerPoint - chap11.ppt [호환 모드]

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

설계란 무엇인가?

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Microsoft Word _mentor_conf_output5.docx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

PowerPoint 프레젠테이션

문서의 제목 나눔고딕B, 54pt

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

쉽게 풀어쓴 C 프로그래밍

歯9장.PDF

PowerPoint 프레젠테이션

본 강의에 들어가기 전

PowerPoint 프레젠테이션

C++ Programming

PowerPoint Presentation

untitled


歯처리.PDF

윈도우즈프로그래밍(1)

Microsoft PowerPoint - chap12.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Java

Index Process Specification Data Dictionary

단순 베이즈 분류기

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

시작하기 시작할 준비가 되었으면 다음 설명에 따라 설문조사를 실시한다. 1단계: 허락받기 클럽을 떠나는 회원에게 에 응해 줄 것인지 물어본다. 이 설문 조사는 클럽의 문제점을 보완해 향후 같은 이유로 이탈하는 회원들이 없도록 하기 위한 것이며, 응답 내용은 대외비로 처

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

서강대학교공과대학컴퓨터공학과 (1/5) CSE3081 (2 반 ): 알고리즘설계와분석 < 프로그래밍숙제 2> (v_1.0) 담당교수 : 임인성 2015 년 10 월 13 일 마감 : 10 월 31 일토요일오후 8 시정각 제출물, 제출방법, LATE 처리방법등 : 조교가

3장 함수


PowerPoint 프레젠테이션

chap7.key

Microsoft PowerPoint - 제11강 파일 처리

tkinter를 이용한 계산기 구현

PowerPoint Template

Microsoft PowerPoint - chap05-제어문.pptx

C 프로그램의 기본

Chapter 4. LISTS

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

문서의 제목 나눔고딕B, 54pt

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

슬라이드 1

PART

Part Part

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

슬라이드 1

Tcl의 문법

( )업계소식

( )전국네트워크


( )업계소식

( )업계소식(14.01월)

chap 5: Trees

01-OOPConcepts(2).PDF

PowerPoint 프레젠테이션

기술통계

11장 포인터

11장 포인터

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

4장.문장

JAVA PROGRAMMING 실습 09. 예외처리

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

A Review of C Programming

Transcription:

파일안에는바이트들이순차적으로저장되어있고맨끝에는 EOF(end-of-file) 마커가있다. 모든파일은입출력동작이발생하는위치를나타내는위치표시자 (position indicator) 를가지고있다.

텍스트파일 (text file) 이진파일 (binary file)

infile = open("phones.txt", "r") s = infile.read(10) print(s); infile.close() 홍길동 010-12

infile = open("phones.txt", "r") s = infile.readline() print(s); s = infile.readline() print(s); s = infile.readline() print(s); infile.close() 홍길동 010-1234-5678 김철수 010-1234-5679 김영희 010-1234-5680

infile = open("phones.txt", "r") line = infile.readline() while line!= "": print(line); line = infile.readline() infile.close() 홍길동 010-1234-5678 김철수 010-1234-5679 김영희 010-1234-5680

infile = open("phones.txt", "r") for line in infile: line = line.rstrip() print(line) infile.close() 홍길동 010-1234-5678 김철수 010-1234-5679 김영희 010-1234-5680

import os.path outfile = open("phones.txt", "w") if os.path.isfile("phones.txt"): print(" 동일한이름의파일이이미존재합니다. ") else : outfile.write(" 홍길동 010-1234-5678") outfile.write(" 김철수 010-1234-5679") outfile.write(" 김영희 010-1234-5680") outfile.close()

# 입력파일이름과출력파일이름을받는다. infilename = input(" 입력파일이름 : "); outfilename = input(" 출력파일이름 : "); # 입력과출력을위한파일을연다. infile = open(infilename, "r") outfile = open(outfilename, "w") # 합계와횟수를위한변수를정의한다. sum = 0 count = 0 # 입력파일에서한줄을읽어서합계를계산한다. for line in infile: dailysale = int(line) sum = sum + dailysale count = count + 1 # 총매출과일평균매출을출력파일에기록한다. outfile.write(" 총매출 = "+ str(sum)+"\n") outfile.write(" 평균일매출 = "+ str(sum/count )) infile.close() outfile.close()

데이터추가하기 outfile = open("phones.txt", "a") outfile.write(" 최무선 010-1111-2222") outfile.write(" 정중부 010-2222-3333") outfile.close()

줄바꿈기호삭제하기 infile = open("proverbs.txt", "r") for line in infile: line = line.rstrip() print(line); infile.close()

파일에서단어읽기

infile = open("proverbs.txt", "r") for line in infile: line = line.rstrip() word_list = line.split() for word in word_list: print(word); infile.close() All's well that ends well.... flock together.

from tkinter import * from tkinter.filedialog import askopenfilename from tkinter.filedialog import asksaveasfilename readfile = askopenfilename() if( readfile!= None): infile = open(readfile, "r") for line in infile.readlines(): line = line.strip() print(line) infile.close()

텍스트파일을열어서파일안의스페이스문자의개수와탭의개수를세는프로그램을작성하여보자. 파일이름을입력하시오 : proverbs.txt 스페이스수 = 20, 탬의수 = 0

def parse_file(path): infile = open(path) spaces = 0 tabs = 0 for line in infile: spaces += line.count(' ') tabs += line.count('\t') infile.close() return spaces, tabs filename = input(" 파일이름을입력하시오 : "); spaces, tabs = parse_file(filename) print(" 스페이스수 = %d, 탬의수 = %d" % (spaces, tabs))

텍스트파일을열어서각줄의앞에번호를매겨서다시파일에쓰는프로그램을작성해보자. 1: All's well that ends well. 2: Bad news travels fast. 3: Well begun is half done. 4: Birds of a feather flock together.

infile = open("proverbs.txt") outfile = open("output.txt","w") i = 1 for line in infile: outfile.write(str(i) + ": " + line) i = i + 1 infile.close() outfile.close()

파일안의각문자들이몇번이나나타나는지를세는프로그램을작성하자. {' ': 16, 'e': 12, 'o': 4, 'a': 7, 'u': 1, 'n': 4, 'k': 1, 'A': 1, 'r': 4, 'g': 2, 's': 7, 'b': 1, 'd': 4, 'v': 1, 'f': 5, 'w': 3, 'B': 2, 'h': 4, 'i': 2, 't': 7, 'l': 11, 'W': 1, '.': 4, "'": 1, 'c': 1}

filename = input(" 파일명을입력하세요 : ").strip() infile = open(filename, "r") # 파일을연다. freqs = {} # 파일의각줄에대하여문자를추출한다. 각문자를사전에추가한다. for line in infile: for char in line.strip(): if char in freqs: freqs[char] += 1 else: freqs[char] = 1 print(freqs) infile.close()

CSV(Comma Separated Values) 형식은엑셀과같은스프레드쉬트나데이터베이스에서가장널리사용되는입출력형식이다. 파이썬은 CSV 형식을읽기위해서 csv 라고하는모듈을제공한다. 이모듈을이용하면 CSV 파일을쉽게읽을수있다. 우리는연습삼아서 CSV 형식의파일을읽는코드를작성하여보자. 1/2/2014,5,8,red 1/2/2014 5 8 red 1/3/2014,5,2,green 1/3/2014 5 2 green 1/4/2014,9,1,blue 1/4/2014 9 1 blue

# 파일을연다. f = open("c:\test.csv", "r") # 파일안의각줄을처리한다. for line in f.readlines(): # 공백문자를없앤다. line = line.strip() # 줄을출력한다. print(line) # 줄을쉼표로분리한다. parts = line.split(",") # 각줄의필드를출력한다. for part in parts: print(" ", part)

예를들어평문 come to me 은 FRPH WR PH 으로바뀐다. 시저암호방식을이용하여서파일을암호화하고복호화하는프로그램을작성하라. 원문 : the language of truth is simple. 암호문 : wkh odqjxdjh ri wuxwk lv vlpsoh. 복호문 : the language of truth is simple.

key = 'abcdefghijklmnopqrstuvwxyz' # 평문을받아서암호화하고암호문을반환한다. def encrypt(n, plaintext): result = '' for l in plaintext.lower(): try: i = (key.index(l) + n) % 26 result += key[i] except ValueError: result += l return result.lower()

# 암호문을받아서복호화하고평문을반환한다. def decrypt(n, ciphertext): result = '' for l in ciphertext: try: i = (key.index(l) - n) % 26 result += key[i] except ValueError: result += l return result n = 3 text = 'The language of truth is simple.' encrypted = encrypt(n, text) decrypted = decrypt(n, encrypted) print (' 평문 : ', text) print (' 암호문 : ', encrypted) print (' 복호문 : ', decrypted)

이진파일 (binary file) 은데이터가직접저장되어있는파일이다.

예를들어평문 come to me 은 FRPH WR PH 으로바뀐다. 시저암호방식을이용하여서파일을암호화하고복호화하는프로그램을작성하라. 원본파일이름을입력하시오 : 123.png 복사파일이름을입력하시오 : kkk.png 123.png 를 kkk.png 로복사하였습니다.

filename1 = input(" 원본파일이름을입력하시오 : "); filename2 = input(" 복사파일이름을입력하시오 : "); infile = open(filename1, "rb") outfile = open(filename2, "wb") # 입력파일에서 1024 바이트씩읽어서출력파일에쓴다. while True: copy_buffer = infile.read(1024) if not copy_buffer: break outfile.write(copy_buffer) infile.close() outfile.close() print(filename1+" 를 " +filename2+" 로복사하였습니다. ")

파일포인터를이동시켜서랜덤하게읽는다.

위치표시자의이동

infile = open("test.txt", "r+") str = infile.read(10); print(" 읽은문자열 : ", str) position = infile.tell(); print(" 현재위치 : ", position) position = infile.seek(0, 0); str = infile.read(10); print(" 다시읽은문자열 : ", str) infile.close() 읽은문자열 : All's well 현재위치 : 10 다시읽은문자열 : All's wel

pickle 모듈의 dump() 와 load() 메소드를사용하면객체를쓰고읽을수있다.

import pickle mymovie = { "Superman vs Batman ": 9.8, "Ironman": "9.6" } # 딕셔너리를피클파일에저장 pickle.dump( mymovie, open( "save.p", "wb" ) ) # 피클파일에딕션너리를로딩 mymovie = pickle.load( open( "save.p", "rb" ) ) print(mymovie) {'Superman vs Batman ': 9.8, 'Ironman': '9.6'}

오류가발생할수있다! >>> (x, y)=(2, 0) >>> z=x/y Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> z=x/y ZeroDivisionError: division by zero >>>

오류가발생했을때오류를사용자에게알려주고모든데이터를저장하게한후에사용자가우아하게 (gracefully) 프로그램을종료할수있도록하는것이바람직하다.

(x,y) = (2,0) try: z = x/y except ZeroDivisionError: print ("0 으로나누는예외 ") 0 으로나누는예외

while True: try: n = input(" 숫자를입력하시오 : ") n = int(n) break except ValueError: print(" 정수가아닙니다. 다시입력하시오. ") print(" 정수입력이성공하였습니다!") 숫자를입력하시오 : 23.5 정수가아닙니다. 다시입력하시오. 숫자를입력하시오 : 10 정수입력이성공하였습니다!

try: fname = input(" 파일이름을입력하세요 : ") infile = open(fname, "r") except IOError: print(" 파일 " + fname + " 을발견할수없습니다.") 파일이름을입력하세요 : kkk.py 파일 kkk.py 을발견할수없습니다.

try: fh = open("testfile", "w") fh.write(" 테스트데이터를파일에씁니다!!") except IOError: print("error: 파일을찾을수없거나데이터를쓸수없습니다. ") else: print(" 파일에성공적으로기록하였습니다. ") fh.close() 파일에성공적으로기록하였습니다.

파일은텍스트파일과이진파일로나누어진다. 파일은연후에입출력이끝나면반드시닫아야한다. 파일에서데이터를읽거나쓰는함수는 read() 와 write() 함수이다. 텍스트파일에서한줄을읽으려면 for 루프를사용한다. 예외처리는오류가발생했을때프로그램을우아하기종료하는방법이다. try 블록과 except 블록으로이루어진다.