본문 바로가기
코스웨어/16년 스마트컨트롤러

20160406_김도관_업무일지_C언어기초_02

by 알 수 없는 사용자 2016. 4. 11.
728x90
반응형

C언어

Scanf


입력받은 값을 특정 변수의 주소에 해당하는 값에 전달



포인터 대상 const


포인터의 경우 const 는 *앞에 있으면 성립


변수앞의 const는 해당변수만을 상수로 취급




Const 각각 표기에 따른 결과


코드




처음 출력시



리눅스는 효율적으로 쓰기 때문에 메모리 주소가 같음

도스의 cl은 비효율적이므로 메모리 주소가 각기 다름







상수변경 코드추가시





출력




에러 뜸 상수이므로 변경 불가능







배열 


오름차순 정렬

작은 숫자부터 차레대로 정렬



출력


오름차순 정렬 하는 함수 BubbleSort에 넣어서 값을 정렬 시킨뒤 

하나 씩 출력




다차원 배열



출력



배열 주소에 넣었기에 main내부에서 값 변경이 적용됨








2차원 배열 포인터




출력


whoA에 각각 들어간 num1~4까지 출력

whoB에 들어간 arr2d의 값을 배열에 맞춰서 2행 4열로 출력











함수포인터

특정 함수에 대한 메모리 주소를 담을 수 있는 것

1. 프로그램 코드가 간결해짐

2. 함수포인터를 배열에 담아서도 사용할 수 있으므로 중복되는 코드를 줄일 수 있음

3. 상황에 따라 해당되는 함수를 호출 가능




예제



포인터변수 p가 printf를 가르키므로 p는 printf함수처럼 출력가능






FunctionPointer.c



출력



함수포인터에 각각 SimpleAdder과 ShowString 넣어서 출력






UsefulFunctionPointer.c




출력



olderFirst함수를 실행해서 높은값을 first에 넣고 출력

youngerFirst 함수를 실행해서 낮은값을 first에 넣은뒤 출력











Void 포인터

Type이 존재하지 않는 포인터 변수


순수한 존재로써 모든것을 담을수 있음


주소의 값에만 의미를 두고 type은 나중에 지정할때 유용함



코드



출력


위와같이 나중에 type을 각각 선언 가능




VoidTypePointer.c


출력



각각의 주소값 저장됨







main 함수를 통한 인자 전달




코드



출력:


argc : 프로그램 실행시 명령행 옵션의 개수

argv : 프로그램 실행시 실제 저장되는 문자열들의 배열






응용 GCC흉내내기


코드




출력



gcc 입력시 전달된 문자열은 하나이므로 printf로 gcc: fatal error를 출력함





응용 CL.exe 흉내 내기



코드



출력













문자단위 입출력 함수


getchar


stdin 에서 한 문자를 가져온다. 

표준 입력에서 다음 문자를 리턴한다. 
읽어들인 문자를 int로 리턴함


putchar

stdout 에 한 문자를 쓴다




ReadWriteChar.c




출력








문자 입출력 EOF

EOF (End Of File) 

파일의 끝을 나타내는 기호


ConsoleEOF.c



출력


파일의 끝  즉, 엔터를 입력하면 중지되고 출력하게됨






문자열 단위 입출력 함수


puts 

스트림에 문자열 씀

str 이 가리키는 문자열을 NULL 문자 ('\0') 에 도달할 때 까지 스트림에 복사


fputs

스트림에 문자열 씀

스트림(stream) 에 한 문자를 쓰고 위치 표시자를 증가




WriteString.c



출력



1. puts 함수로 Simple String과 So Simple String을 출력

2. stdout은 현재 모니터에 출력하므로 화면에 Simple String과 So Simple String을 출력




fgets

스트림(stream)에서 문자열 받음

fgets 함수는 scanf 함수와는 달리 오직 개행 문자에 의해서만 입력이 끝나기 때문에 띄어쓰기가 있는 문자열도 입력 가능 

반면에 scanf 함수의 경우 개행 문자 뿐만이 아니라 ' ' 와 '\t' 에 의해서도 입력이 끝나기 때문에 띄어쓰기가 있는 문자열은 입력 받을 수 없음


ReadString.c



출력


입력스트림을 읽어들여서 str의 크기만큼 str에 넣는다



fprintf

데이터를 형식에 맞추어 스트림에 씀



printf는 실제 하는것은 없고 fprintf가 실제 작업을 수행함



728x90