본문 바로가기

전체 글

C 전화번호부 v2.0_1) 1) 추가할 기능 ​ 1) 이 프로그램에 추가할 기능은 전화번호부 정보를 file 에 저장하고, 다시 읽어오는 기능 먼저 file 안에 저장할 때 어떤 형식으로 저장할지 지정해야 하는데, 이 file 안에 한줄 당 한 사람의 정보가 저장이 된다. 이름. 전화번호. 이렇게 간단한 형식으로 저장이 된다. 프로그램 실행 후 read , 파일 이름. txt 이를 통해, 파일 안의 정보를 읽어오고, add 를 통해, 사람의 정보를 추가 delete 을 통해 , 지우고 status 로 현황 파악 save로 현재 파일을 저장. 이러한 과정을 반복한다. 2) 뿐만 아니라, 저장을 할 때, 사람들의 이름이 알파벳 순서대로 저장될 수 있게 끔 해주어야 한다. ( 추가 기능 ) ​ ​ ​ 2) 전화번호부 2.0 2번째 전화.. 더보기
C 전화번호부 v1.0_2) 1) add 함수 우선, add 명령어의 경우, 아래의 그림과 같이. 2개의 인자값을 줘야 한다 사람 이름 그 사람의 전화번호 다시 2번의 scanf 를 통해 즉, buf1, buf2 를 통해, 사람 이름.과 그 사람의 전화번호.를 받는다. 사람 이름은 buf1, 전화번호를 buf2 names[ n ] = strdup( buf1 ) numbers[ n ] = strdup( buf2 ) 각 배열의 n 번째 칸에 저장한다. 왜 n 번째 칸일까 ? n 이라는 것은, 이미 저장되어있는 사람 수. 처음 n 은 0이다. 배열 index 는 0부터이니까 따라서 만약 5명의 사람이 저장되어 있다면 배열 index 상으로는 0 ~ 4 일 것이다. 그러므로 names[ 5] 를 하게되면, 그 다음 사람을 추가하는 개념이 .. 더보기
C 전화번호부 v1.0_1) 자료구조란 ? 우리가 부여한 데이터들을 , 어디에, 어떤 구조로 저장할 것인가. 일반적으로 대부분의 경우에는, 자료구조를 결정하고 , 그 다음, 코드를 작성한다. 어떤 데이터를 보관하고, 유지하고, 다뤄야 하는지를 생각해본다. 이 경우에는 비교적 자명하다. 프로그램이 저장해야 할 데이터는 기본적으로 사람의 이름과, 전화번호부 이다. 여러 사람의 이름들과 , 그 사람들의 전화번호부. 가장 기본적인 방법은 물론, '배열' 을 사용하기. ​ 왜 ? 사람이 여러명이니까, 전화번호도 여러명이니까 사람 이름은 각각이 문자열인데, 그 문자열이 여러개 있는것. 우리가 일반적으로 동일한 타입의 데이터가 여러개 있을 때, 그 데이터를 저장하는 가장 기본적인 자료구조는 '배열'이다. 이 경우에는 데이터가 2 가지 ( 전화번.. 더보기
5) (예제2)C isspace, read_line(줄단위 읽기 ) 한 것을 그대로 출력하는 것이 아니라, 불필요한 부분은 제외하고 출력하는 것 원리. 즉, imput 을 보면, 공백을 입력받기도 하는데, 이와 같이 불필요한 입력값들은 저장하지 말고, 필요한 것들만 compressed 라는 이름의 문자배열에 저장해서 출력하기. 공백은 제거 필요한 값들은 저장하기. IS 뒤에 있는 공백은 저장하되, 그 뒤에 이어지는 공백 2개는 없애야지 그렇다면 어떻게 이것을 가능하게 하냐 어떻게 필요한 공백을 선별적으로 추출할 수 있는가 우선 문자는 다 compressed 에 저장하기 공백을 보면, 그것을 compressed 에 저장할지 말지, 선택하는 코드를 넣기. 를 어떻게 해 ? 현재 compressed 에서 화살표는 compressed 의 i 번째 문자.이다. 만일 " i - 1.. 더보기
4) (예제1)scanf, fgets, gets 함수 차이점 제 $ 를 쓰고, 한칸 띄고, 특정 문장을 입력하고, 엔터키를 치면 hello:5 와 같이, 내가 입력한 문자열과, 그 문자열의 길이가 나온다. 꼭 hello 와 같이, 하나의 문자만 쓰는 것이 아니어도 된다. welcome to the class 와 같이, 공백이 포함될 수 있고, 이에 대한 문자열 길이는, 공백도 포함시켜서 count 된다. ​ ​ VERSION 1 ( scanf ) // Version 1 # include # include int main() { char buffer[ 40 ] ; while( 1 ) { printf("$ "); scanf("%s" , buffer ); printf("%s : %d\n" , buffer, strlen(buffer) ) ; return 0; } # in.. 더보기
3) 파일로 입출력하기 1) 외부 파일을 읽기 지금까지는 우리가 키보드로만 입력받는 내용을 다루었다. 이번에는 input.txt 라는 파일로부터 데이터를 받고 싶다 우선 파일을 열어야 하니까 : fopen 어떤 목적으로 불러올거야? : "r" = read 파일을 오픈하면 FILE * 라는 어떤 값을 반환해주는데, 그 값의 type은 그냥 FILE* 라고 표시하기 fscanf 를 통해, 파일의 내용을 읽을 때, 대부분의 경우 첫번째 매개변수로 fopen이 제공해주는 *fp 값을 넣기. file은 항상 끝날 때 fclose( fp )를 통해 닫기. 2) 외부 파일에 쓰기 마찬가지로, 우리가 fopen 을 통해 open 하되, "w" 형태로 오픈한다. 내가 여기에 새로운 내용을 쓰고 싶은 것이니까 더보기
2) 문자열 기본 함수 * 문자열 기본 함수 # include strcpy : 문자열 복사 strlen : 문자열 길이 strcat : 문자열 합치기 strcmp : 문자열 비교 # 예제 1. 출력결과 : helloR? 즉, hello 가 출력이 되어야 하는데, 뒤에 이상한 애들이 붙어서 출력되는 것이다. 왜? NULL char 의 문제. 다시 말하면, 현재 우리는 word[10] 을 통해서, 10칸의 공간을 할당했다. 그런데 우리는 word[ 0 ] 부터, word[ 4] 까지의 공간만을 할당했다. 즉, hello 라는 5개의 문자만 저장했다. 이때 우리는 word를 출력하는데, 함수 입장에서는 어디까지 출력해야 할지를 모르는 것이다. 즉, word[5] = '\0' 이런식으로 null char 을 넣어줘야 하는 것이다. #.. 더보기
1) 문자열 개요 1) 개요 C 언어에서 문자열을 저장하는 방법은 문자배열을 만들어서, 각 칸에 한글자씩 저장하는 것이다. hello 인데 크기가 6인 문자열 ( char str[6] )을 할당한다. 문자열 마지막에 NULL 이 들어간 것이다. 문자열의 맨 끝에 NULL 을 넣는 것은, C언어의 문법적으로 틀린 것은 아니지만 C 언어가 제공하는 라이브러리 대부분이 문자열을 다룰 때, 끝에 NULL 이 있다라는 가정을 두고 기능한다. ex. printf( ) 즉, NULL CHAR 의 역할은 이 부분이 문자열의 끝이다 라는 것을 알려주는 것이다. 문자열을 생성하는 편리한 방법이 격 따옴표 연산자 ex. char str[ ] = "hello" 이렇게 하게 되면, C compiler 가 문자열 뒤의 문자개수를 count 해서,.. 더보기