728x90
300x250

[C언어] C언어 널포인터를 활용한 출력 결과

ptr이 예를 들어 x0000 주소라고 한다면, ptr의 값을 1증가 시킬 때 그 다음 번지는 무엇일까?


 #include <stdio.h>

 int main()
 {

int *ptr1 = 0;
char *ptr2 = 0;
double *ptr3 = 0;

printf("%d, %d, %d \n", ptr1++, ptr2++, ptr3++);
printf("%d, %d, %d \n", ptr1, ptr2, ptr3);

return 0;

 }
 

출력 : 0, 0, 0
         4, 1, 8


'포인터 연산에 따른 실질적인 값의 변화는 포인터 타입에 따라 다르다'는 결과를 알 수 있다.
int형 변수는 4바이트이다.
int *타입의 포인터 변수 값을 하나 증가시키면 4가 증가한다.
char형 변수는 1바이트이다.
char *타입의 포인터 변수 값을 하나 증가시키면 1이 증가한다.

즉,
x0001의 주소의 다음을 가르키는 주소는 x0004 이다.

반응형
728x90
300x250

[C언어] N! 팩토리얼을 이용한 반복문과 재귀함수

반복문 for, while, do while을 쉽게 이해 및 생각해보기 위해 몇자 적었습니다.
! 팩토리얼을 활용하여 반복문을 작성하겠습니다.


 


 

 

준비물 : 연습장, PC, Visual C++


반복문 연습 문제)
변수 조건)
int i = 1, int n = 4, unsigned long nRes, unsigned long factorial;

1. N! 팩토리얼을 순서도로 설계하시요.



2. 반복문과 함수 형식을 사용하여 구현하시요.

출력값 : 4! = 24

 

 



3. 재귀함수로 구현하시요.

출력값 : 4! = 24



반응형
728x90
300x250

[C언어] main()함수의 인자 활용(명령행 인자 : argc, argv)

C언어 책을 보면 Argv, Argc라는 것이 구구절절 설명되어 있다. 이 부분이 설명되어 있는 영역의 주제는 대분류로 보자면 '함수'영역에 있으며 세부분류에 보면 'main()함수의 인자 활용'이라는 곳에 나오는 부분이다.
나는 먼저 인자라는 말을 '조건'이나 '발생하는 원인 요소'로 바꾸고 설명하겠다.

우리가 CUI를 올리든 GUI를 올리든 기본적으로 발생하는 함수의 조건은 main()이다.
main() 또한 역시나 요소(factor)가 존재한다. 그렇지만 main()함수는 구성하는 각각의 요소가 명확히 정해져 있지 않다.

선수 지식 : 포인터나 배열


1. main()함수를 구성하고 있는 요소가 명확하지 않는 이유는 무엇일까?

그 이유는 main()함수가 운영체제에 의해 실행되는 진입점 역할을 하므로 프로그램의 시작과 종료시 다양한 시스템에서의 운영 환경을 수용할 수 있도록 유연해야만 하기 때문이다.

오늘 실습은 main()함수의 인자 활용이라는 주제이기 때문에 argc, argv라는 함수를 활용하는 실습을 해보겠다.
main()함수에서 argc, argv에 대한 다음과 같은 형태의 원형을 지원한다.
int main(int argc, char *argv[]);

콘솔에서는 다음과 같이 사용된다.




2. Argc, Argv를 담고 있는 헤더는 무엇인가?

#include <stdlib.h>

용어 정리)
1. Argc는 무엇인가?
Argument Count
명령행 개수

2. Argv는 무엇인가?
Argument Vector
명령행 메모리 목록(배열)


3. Argc 단독 사용

#include <stdio.h>
#include <stdlib.h>

int main(int argc)
{

 printf("%d", argc);

}



태스트 결과


1번 : 'ch02_01' 입력했을 때?
출력값 : 1
2번 : 'ch02_01 ' 입력했을 때?
출력값 : 1
설명 : [0][0]은 기본값 ch02_01이므로 1
더불어 파일명이기 때문에 자신 스스로임
3번 : 'ch02_01 1' 입력했을 때?
출력값 : 2
설명 : [1][0]
4번 : 'ch02_01 12' 입력했을 때?
출력값 : 2
설명 : [1][0],[1][1]
5번 : 'ch02_01 12 ' 입력했을 떄?
출력값 : 2
설명 : [1][0], [1][1], [1][2]
빈칸은 \n으로 메모리 주소에 기억이 됩니다.
6번 : 'ch02_01 12 3' 입력했을 때?
출력값 : 3
설명 : [2][0]



4. Argc, Argv

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

 printf("[0][0]\n");
 printf("테스트 1번:%d %c\n", argc, argv[0][0]);

}



태스트 결과


설명 : [0][0]이므로 1개, c는 자기 자신(파일명)을 메모리에 주소로서 처리하고 있음.
예) [0][0] = c, [0][1] = h, [0][2] = 0

보충 설명 : char *argv[]를 char **argv로 쓸 수 있음.
포인터의 포인터(**)는 * 포인터의 주소를 저장하기 위해 사용.
배열로서 해석될 수 있는 영역임.


5. 참고) Argc, Argv, Env 활용


Env는 Environment의 약자로서 환경을 의미합니다.
환경설정 내용을 보기위해 사용하는 인자입니다.
main()함수에서 다음과 같은 형식의 원형으로 사용됩니다.

int main(int argc, char **argv, char **env)

소스

#include <stdio.h>

int main(int argc, char **argv, char **env)
{
 for(;env;env++)
  puts(*env);
}



태스트 결과

반응형
728x90
300x250

[PC활용] Winamp 5를 활용한 mid파일 mp3로 변환하기

이 글을 작성하기에 앞서 mid파일을 mp3로 변환하고자 많은 시간을 소모하였습니다.
Direct Mid to Mp3 Converter라는 외국 프로그램과 MidiMeow라는 프로그램을 필드테스트 해본 결과로 음질이 매우 저조하거나 음원이 손상되는 것을 체험할 수 있었습니다. 그리하여 Winamp의 Output 플러그인을 활용한 Mid파일을 mp3로서 변환하는 방법을 시도해보았습니다.
음원의 품질을 그대로 유지할 수 있다는 사실을 알게 되었습니다.
그리하여 이 글을 작성하게 되었습니다.


1. 윈엠프 설치
winamp556_lite_ko-kr.exe

운영체제: 윈도우 XP(Microsoft Windows XP)


2. 사용 방법
1.
Winamp 5를 설치한 후에 실행합니다.
오른쪽 버튼을 누르시면 아래와 같이 메뉴가 뜹니다.
옵션(O)에서 기본 설정(P)를 클릭합니다.

 

 


2.
기본 설정 창이 뜨면 왼쪽에 플러그인에 '입력'을 클릭합니다.
NullSoft Midi 플레이어 3.17을 선택한 후 '구성'을 클릭합니다.


3.
MIDI 플레이어 구성이 실행되었으면 장치가 'midiOut / Microsoft MIDI 매퍼'로 기본값이 설정되어있는 것을 확인할 수 있습니다. 장치 탭을 선택한 후에 'DirectMusic / Microsoft Synthesizer (출력 포함)'을 선택합니다.
확인을 누릅니다.


4.
다음은 '출력'을 선택합니다.
Nullsoft Disk Writer v 2.14를 선택한 후에 '구성'을 클릭합니다.


5.
아래 그림과 같이 설정합니다.
변환 형식에 채크 후 'PCM 44,100kHz, ~~'를 클릭합니다.


6.
형식을 MPEG Layer 3로 설정합니다.
특성은 56 kBit/s, 24,000 Hz, Stereo로 설정합니다. (MP3 코덱을 설치하시면 128~320kBit의 음질로서 설정하실 수 있습니다.)
확인을 클릭합니다.


7.
초기 Winamp 화면으로 돌아가서
변환할 midi파일을 불러온 후 재생합니다.


8.
파일 이름을 입력 후에 열기를 클릭합니다.
주의 : 한 곡이 재생이 끝날 때까지 기다립니다.(녹음을 이용한 방식임)

예제에 사용된 음원
coke.zip
2011/02/20 수정


3. 코덱

lameACM-3.98.4.zip

 


4. 참고자료(Reference)

 

1. http://www.winamp.com
2. https://www.driverguide.com/driver/detail.php?driverid=1460701&action=filfo
3. http://www.rarewares.org/index.php

반응형
728x90
300x250

[Linux] Apache 2.x 서버에서 (98)Address already in use: make_sock 오류가 발생할 때 대처방법

(98)Address already in use: make_sock: could not bind to address [::]:80
no listening sockets available, shutting down
unable to open logs

문제 원인 : logs 폴더에 있는 make_sock이라는 파일이 없거나 80포트 영역을 사용하고 있을 때 발생.

해결 방법 :
1. logs 폴더에 make_sock 파일이 정상적으로 있는지 확인.
-> 없다면 재설치하세요.
2. 80포트 사용여부 확인

반응형
728x90
300x250

[Linux] Centos 5.3(32bit), Ubuntu 9.04(64bit) - Apache 2.x + PHP 5.3 + MySQL, 라이브러리 설치하기

태스트 환경1 :

운영체제 : Centos 5.3(32bit)
CPU : AMD Athlon 64 x2 3600
RAM : 2GB

태스트 환경2 :
운영체제 : Ubuntu 9.04(64bit)
CPU : Atom 230 x2
RAM : 1GB


필수 사용 라이브러리 :


Libmcrypt(암호화 라이브러리)


다운로드를 받을만한 위치로 이동합니다.


다운로드 받기 :
http://www.mysql.com (MYSQL 홈페이지)
ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.11.tar.gz
ftp://ftp.neowiz.com/pub/languages/php/

미러링 서버 제공 : 네오위즈

다운로드 받기


wget 주소 (MySQL 5.x 버전) 다운로드
tar xvfz mysql-5.1.version.tar.gz                  (압축 풀기)

wget ftp://ftp.neowiz.com/pub/apache/httpd/httpd-2.2.11.tar.gz      (Apache 2.2.11) 다운로드
tar xvzf httpd-2.2.11.tar.gz                       (압축 풀기)

wget ftp://ftp.neowiz.com/pub/languages/php/     (Php-5.2.10) 다운로드
tar xvzf php-5.2.10.tar.gz                        (압축 풀기)



 


 


 


 


 


 


 
(기타 라이브러리 재 연동)
/usr/local/php/bin/pear upgrade-all
/usr/local/php/bin/pear install DB File Mail Mail_Mime
/usr/local/php/bin/pear install MDB2 MDB2_Driver_mysql MDB2_Driver_mysqli
/usr/local/php/bin/pear install HTTP_Request XML_RPC


최종 수정 : 2009년 9월 22일

반응형
728x90
300x250

[WinXP] XP SP3설치시 Internet Explorer 7, 8 바탕화면에 아이콘 보이기

윈도우XP SP3부터 공정거래위원회의 지침에 따라 Internet Explorer의 아이콘을 바탕화면에 의무적으로 생성하는 기능을 제거하였습니다.



바탕화면에 Internet Explorer 아이콘을 설치할 수 있도록 하는 레지스트리 파일을 아래에 첨부해 놓았습니다.
잘 활용하시기 바랍니다.

090912_Internet_Desktop.reg

반응형
728x90
300x250

[PC활용] Adobe CS4 - 설치시 오류가 발생할 때 해결 방법

Adobe CS4를 설치시에 설치 위치가 C:\Program Files\Common Files\Adobe\installer\???????? 으로 루트가 변경이 되어 설치가 진행이 되지 않을 경우 혹은 설치시 이전에 제거했던 Adobe 제품 프로그램과의 충돌로 설치가 어려울 경우에 아래와 같은 방법으로서 해결하실 수 있습니다....

2가지 방법 모두 다 관리자 권한에서 실행하셔야만 합니다.

윈도우 비스타의 경우에는 반드시 관리자(Administrators)권한으로서 실행하시기 바랍니다.
* 이하 나머지 운영체제들은 관리자 계정으로 접속하여 실행하시기 바랍니다.


1. Microsoft Installer Cleaner으로 Msi 설치 파일 정리하기
msicuu2.zip
2. Adobe Cleanup Script 사용하여 이전에 충돌하고 있는 (삭제되지 않은) 프로그램 제거하기
WinCS4Cleanupscript.zip

1. 압축을 풉니다.

2. Dist 폴더에 있는 CS4InstallerDatabaseUtility를 실행합니다.


시커먼 프롬프트 창이 뜹니다.

3. 사용자의 언어를 선택해주시면 됩니다.
(한국어 사용자의 경우에는 e를 입력해주시면 됩니다.)


4. 내용에 동의합니다.
y

5. 해당 제품의 번호를 입력합니다.(제거합니다.)


[글을 마치며]

1번 과정을 설치하지 않을시, 2번 과정의 List of products installed on this machine을 읽어들일 수 없으므로 반드시 먼저 진행해야만 합니다.

 

반응형

+ Recent posts