프로그래밍/c언어 6

응용 프로그램 작성 (배열 차순 정렬) -c언어

와! 버블정렬! 어제 오름&내일차순 정렬 배우는줄알고 좋아했다가 알고보니 그냥 정렬 순서만 역순으로 바꾸는 법이었는데, 오늘에서야 비로소 오름차순 정렬을 배운다!!! 순서를 결정하는 정렬중 가장 널리 알려진 정렬 알고리즘은 버블 정렬(Bubble Sort)이 있다. 이 정렬방법은 이웃 자료들을 비교하여 순서 바뀐 원소를 교환하는 방법이다. #include #include void bubble(char *, int); int main(){ char str[80]; gets(str); bubble(str, strlen(str)); printf("재정렬한 결과 %s", str); } void bubble(char *item, int count){ int pass =0; int change =1; int j; ..

파일 입출력 라이브러리

스트림(Stream)은 순서있는 데이터를 입력받거나 출력할 때 입출력 장치로부터 데이터가 한 쪽으로 흘러가는 것을 의미 버퍼(Buffer)는 장치와 프로그램 사이에 전송되는 데이터를 임시로 저장하는 메모리 공간 이 두개의 개념이 특히 버퍼의 개념이 뒤에서 설명하는게 너무 이해가 되지 않았다. 앞에선 gets()등을 사용할때 버퍼가 필요없다 라고 뚱 지나갔으면서 이제서야 버퍼에 대한 정의를 설명하다니 정말이지 이해할 수 가 없다. 이 챕터에서는 외부파일을 열거나 생성하고 거기에 텍스트를 입력하고 저장하는 등을 하는데, 이제까지 우리가 프로그래밍을 한다고 해서 숫자나 문자가지고 계산하는 프로그램만 만들었지 코딩을 배우기 전에 생각했던 GUI프로그램은 언제쯤 만들수 있을까 고민했던 것들을 조금 희석해 주었으나..

표준 입출력 함수와 문자열 함수(엔터키 무시, 외울 함수 많음) -C언어

짜잔! 내가 제일 싫어하는 문자열 시간☆ 문자를 두개 이상 입력해야 할때 #include int main(){ char a,b; scanf("%c",&a); scanf("%c",&b); printf("%c\n%c",a,b); } 이렇게 작성해버리면 입력할때 누른 [enter]키도 아스키코드에 들어가는 '문자'이기 때문에 자동으로 b에 입력이 된다. 여기서 해결방법은 크게 두가지가 있는데 하나는 #include int main(){ char a,b; scanf("%c",&a); scanf(" %c",&b); printf("%c\n%c",a,b); } 와 같이 뒷 코드에 스페이스바로 간격을 만들어 주는 것이고 *여기서 주의할점은 scanf(" %c",&a);이렇게 작성해버리면 [엔터]a[엔터]b로 입력해야 ..

표준 라이브러리의 선행 처리기 -C언어

드디어 새로운 챕터인 표준 라이브러리에 들어가게 되었다. 새로운 챕터이니 만큼 새로운 지식을 머리속에 집어넣어야 한다는 압박감을 잠시 느꼈지만 그 걱정이 무색하게 선행처리기의 내용은 정말 별것 아니었다. 처음 c언어를 쓰게되면 거의 무조건적으로 #include 와 를 써야하는 데 이 챕터에서 왜 이 헤더파일을 사용해야 하는가에 대해 잠깐 짚고 넘어갔다. 그러면서 입력받은 알파벳가 대,소문자인지 가려내고 이를 대->소 , 소 -> 대 로 변환하는 프로그램을 잠깐 만들어 보았는데 별 내용은 아니었고 그냥 엑셀에서 함수를 사용해 대소문자를 변환하는 것과 비슷했다. #include //알파벳 변환 함수 헤더 int main(){ ... if(isupper(op)) //알파벳 대문자를 판단하는 함수 op = to..

와! 구조체! 신세계! (짤막한 포인터) -C언어

현재 방학인 틈을 타 알고리즘 마스터가 되기를 원했지만, 프로그램밍 실력은 그저 작은 지식들을 돌린다고 만들어지는게 아닌지라 일단 기초 c 언어의 지식을 늘리기로 했다. 그래서 일단 가지고 있는 프로그램 교재를 한번 전체적으로 한 챕터씩 훑어보기로 했는데 이 전 챕터였던 포인터는 사용 방법을 잘 모르겠다. 포인터에 대해 이해한 내용이라곤 변수를 선언할때 앞에 *를 붙이고 ex) int *po, a=20; po=&a; 를 했을때 po = (a의 주소) *po = 20 만약에 po++을 했을때 (a의 주소)+1이 되는게 아니라 int 메모리의 한칸의 용량인 +4되는것이다 이 이상은 포인터를 왜 사용하는지 이해가 잘 안되었다 그 이후에도 역경은 있었으니 바로 구조체였다. 처음 보는 문법에 도대체 이런것을 왜 ..