본문 바로가기

Cstrcmp

C 전화번호부 v4.0_2) load if( read_line ( fp, buffer, BUFFER_LENGTH) < = 0 ) : 더 이상 읽을 게 없으면, break 만일 유효한 정보가 있다면, name ~ group 정보를 읽고, 그 기준은 # 구분자를 기준으로 적용하는 것이다. 첫번째 ~ 4번째 token 이 각각 name ~ group 으로 들어가는 것이다. 기억할 것은, 존재하지 않는 항목은 한칸의 공백 문자이다. 이름이 없는 사람은 없으니, 해당 사항이 없지만, number ~ group 같은 경우, 없을 수 있으므로, 그 경우에는 한 개의 공백 문자로 이루어진 string 이 되는 것이다. 그리고 다 읽게 되면, 그것을 add ( ) 를 통해 directory에 추가한다. ​ add 4개의 문자를 받는다. 그리고, 알.. 더보기
C 전화번호부 v4.0_1) 1. 개요 지금까지는, 이름, 전화번호, 이메일 주소, 그룹을 지정할 수 있다. 이름 제외한 다른 항목들은 비워둘 수도 있다. 어떤 사람은 이름과 이메일 주소만. 있을 수도 있다. 위를 보면, 예를 들어, add 함수를 실행하고 사람 이름을 치면, 컴퓨터가 물어본다. phone ,email, group 은 뭐냐. 라고 불필요한 2개의 공백은 저장될 때 1개의 공백으로, 프로그램이 알아서 저장한다. 우리는, 입력한 정보를 directory.txt 로 저장한다. 그렇기 때문에, 파일의 형식을 살펴봐야 한다. 1) 각각의 사람에 대해 이름, 전화번호, 이메일, 그룹 등을 모두 지정해야 하는데, 어떤 사람은 1개만, 2개만 등등이 있을 수 있다. 그런데, 지금까지 전화번호부를 만들었을 때와 동일한 방식으로 저장.. 더보기
C 전화번호부 v2.0_2) 4) add 자. 여기서부터는 이제 위에서 설명한 ' 정렬' 을 반영해서 할 건데, 왜 load 함수에서는 저러한 것들을 반영 안했어 ? 왜냐하면, 우리는 파일을 불러올 때, 이미 그 파일이 정렬되었다고 가정하기 때문이다. 당연히 add 할 때는, 우리가 새로운 사람을 추가하는 것이니까, add 할 사람의 이름과 번호를 buf1, buf2 에 입력받는다. 이제 이 사람을 전에는 그냥 맨 뒤에 추가했는데, 정렬을 반영해서 넣는 것이다. ​ 처음에 i = n - 1; 즉, i 가 맨 마지막 사람을 뜻하는 것이다. 그 다음 strcmp( names[ i ] , buf1 ) i 번째 사람의 이름과, 내가 추가할 사람의 '이름'을 비교하는 것이다. strcmp( names[ i ] , buf1 ) 두 문자열이 같.. 더보기
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] 를 하게되면, 그 다음 사람을 추가하는 개념이 .. 더보기