'Programming'에 해당되는 글 91건

  1. 2006.06.21 ls -al
  2. 2006.05.14 c로 cp 프로그램 작성 5
  3. 2006.04.02 getchar 의 리턴형은.. 4
  4. 2006.03.06 C 포인터 기초 정리 3
  5. 2006.03.01 Beginning linux programming 6

ls -al

아주 기본적인 기능만 구현
정렬 색깔 길어지면 흩어져 보이는 현상 argv문제 등 은 귀찮아서 안해


난 한건 별루 없는데 괜히 구조체 끌어쓰다보니깐
쓸떼 없이 복잡해 보인다..(결국에는 함수,구조체 불러서 쓴거 밖에 없다는..)

Plus!  함수 보기(뭐. 그냥 정리할 이유로)

1> time_t time(time_t *tloc)
함수이름:time
리턴형:time_t (알아서 정의된거 가따 쓰기만 하면됨)
인수타입:time_t, 주소가 필요(포인터로 받으므로)

2>DIR *opendir(const char *name)
함수이름:opendir
리턴형:DIR (헤더파일에 정의)
인수:문자열 상수 "." or argv[1] 이런식으로

즉 정리하자면

리턴형 함수명(인자1.인자2,.....)
{
      본체;
      리턴 ?;
}

맨 처음 int** 이라고 쓰면 이함수의 리턴형은 더블형 포인터가됨
*인자는 인자의 타입마다 다름

마지막으로.. 틀려도 책임 못짐 ~^^;

'Programming > System' 카테고리의 다른 글

MBR(?) 출력 하기  (2) 2007.06.17
screen attach dettach 구별법  (2) 2007.02.12
Beginning Linux Programming Part6-Curses  (2) 2006.06.25
Beginning linux programming  (6) 2006.03.01
VIRUS 제작~  (6) 2006.01.03

c로 cp 프로그램 작성

......1 #include stdlib.h>
2 #include sys/stat.h>
3 #include unistd.h>
4 #include fcntl.h>
5 #include sys/types.h>
6
7 int main(int argc,char *argv[])
8 {
9 int fd1,fd2,i,rep;
10 char buf[512];
11
12 if((fd1=open(argv[1],O_RDONLY,0744))==-1){
13 perror("File Open ERROR");
14 exit(1);
15 }
16
17 if((fd2=open(argv[2],O_CREAT | O_WRONLY,0744))==-1){
18 perror("File CREAT ERROR");
19 exit(1);
20 }
21
22 while((rep=read(fd1,buf,512))>0)
23 {
24 if(rep<512) //512byte 보다 작을때
25 for(i=0;i<512;i++){
26 if(buf[i]=='\0'){
27 write(fd2,buf,i);
28 break;
29 }
30 }
31 else //512byte보다 클때
32 write(fd2,buf,512);
33
34 }
35 }

언제까지 이거만 하고 있을거냐.;;

lowid@lowid c]$ time ./wr test2 rep

real 0m0.001s
user 0m0.000s
sys 0m0.000s

lowid@lowid c]$ time cp test2 arr2

real 0m0.001s
user 0m0.000s
sys 0m0.000s

어랏~ 시간이 같네?
cp 명령어도 비스므리하게 만들어 졌나 보군요 ㅋ
(아님말고,,,,,,,,;)

요즘 제가 Ani하나 보고 있는데(한 240메가?)
그거를 제가 만든프로그램으로 복사해봤는데..
플레이도 잘 되네요 ㅇㅅㅇ
오호 놀라워라~(별것도 아닌거 가지고 감동한다)

'Programming' 카테고리의 다른 글

쉘스크립트 하는데  (7) 2008.02.04
간만에 포스팅.. 소스 고치기!  (2) 2007.10.17
Nanika를 써보고 나는 생각들  (5) 2007.06.16
X!!- key_grab  (2) 2007.02.26
getchar 의 리턴형은..  (4) 2006.04.02

getchar 의 리턴형은..

왜 int 형인거냐!!!!!!!!!!!

char가 아니고......orz...

man 페이지만 안깨졌다면.

getchar 끈날때마다 또 getchar 도 귀찮어..

'Programming' 카테고리의 다른 글

쉘스크립트 하는데  (7) 2008.02.04
간만에 포스팅.. 소스 고치기!  (2) 2007.10.17
Nanika를 써보고 나는 생각들  (5) 2007.06.16
X!!- key_grab  (2) 2007.02.26
c로 cp 프로그램 작성  (5) 2006.05.14

C 포인터 기초 정리

포인터 배우기전에 알아두면 좋은것

하기전에

메모리 구조

int=4byte char=1byte float=4byte double=8byte
를 가진다

포인터는 일단 메모리를 저장할수 있는 변수이다
그러므로 포인터변수는 주소를 저장한다(당연하지?)
그럼 그 주소만 가지고 어떻게 데이터를 뽑아올까?

int *a;(여기서 a는 포인터 선언입니다., 주소를 참조한다느게 아니에요)
int b=10;
a=&b;// 여기서 a는 b의 첫째주소 즉 7을 가진다(b의 주소를 a에 대입하므로)

앞에서도 적었듯이 이러면 a는 b의 주소를 가지게 된다(맨앞의)
또한 앞에서 적었듯이 int는 4byte를 가진다고 했다.

a-------- b--------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
===10====

* 각 숫자는 메모리의 주소라고 가정하자 *
* ---는 차지하는 크기이다

printf("%d\n",*a); //이러면 a가 가진주소에서 대상체만큼 (일차원이므로)
4byte 만큼 읽어들인다 여기서 포인터는 주소를 참조합니다 선언부가 아니기 때문에

그럼 그 4 byte 안에 10라는 자료가 있다는것이다

(*)

해당 변수가 가지고있는 주소로부터 해당변수가 가지고 있는 대상체만큼의
바이트수를 읽어들여서 대상체들이 가지고 있는값들을 값으로변환

(&)
해당변수의 자체 주소값을 불러냄
ex> a=&b 포인터변수 a 는 b의 주소(처음)을 가진다

#include "stdio.h"
int main(int argc,char *argv[])
{
int *a; // a 가 바로 포인터 변수
int b=3;

a=&b; //포인터 변수 a는 b의 자체 주소를 대입시킴

printf("%d\n",a);
printf("%d\n",*a);

이프로그램?을 그냥 쓰면 에러가 날것이다..
왜냐하면 잘 보도록 (}가 빠졌다!!)
결과는 알아서 판단하기를 (컴파일하면 나올테니..)

1 메모리 주소만을 저장가능

int *a=&3 같은것은 불가(3이 상수이므로!)

2 포인터는 항상 4바이트를 가짐

종류 sizeof(x) 대상체(포인터가 가진 주소로부터 몇바이트 를 읽어 내는가?)
int *a 4 4
char *b 4 1
double *c 4 8
float *d 4 4

~변수의 타입이 다르더라도 포인터 자체의 크기는 같다..~

3 받을려고하는 변수의 대상체와 포인터의 대상체가 같아야함

일차원일경우는 별생각 안해도? 되긴하지만
2차원인 경우엔..(이건 나중에 할게.. 좀 길거 같애;;)

4 배열을 포인터의 일종이다 (상수포인터==배열)
4번에따라 배열을 포인터로 변환할수 있다

a[3]==*(a+3), a[2][1]==*(*(a+2)+1)
즉 a[x]==*(a+x)라는 공식이 성립한다

좀더 확장하자면 a[0]==*(a+0)==*a (일차원일때만.뭐 이게 1차원이지만)

포인터도 배열처름 쓸수도 있다.

5,포인터와 증감연산자


보통 증감연산자(++,--)는 1 씩증가하는데..
포인터에선(가진주소를) 1씩 증가하는게 아니라 포인터 변수의 대상체만큼 (가진주소) 를증가시킨다

ex> int *a;
~
a++;
이거면 a가 가진 주소에서 4byte를 증가시켜서 a에 그 값을 저장한다는 뜻임(
(int 의 대상체가 4byte이므로,,)

6.포인터는 꼭 초기화를 하자!

포인터 초기화를 하지 않는다면 포인터안에 쓰레기 값이 들어가 그 값을
참조하게 되어 오류를 낼가능성이 있다.

주>
argc,argv-> 예들들어서 ls -a를 한다면
이럴때 argc==2가 이고 argv[0]=ls argv[1]==-a가 입력되는 식이다
sizeof연산자 -> 대상의 크기구함
타입케스팅-> 변수의 타입을 변화시켜줌 ex> (int)a

개인 정리용? 임.. 잊어버릴까봐 대충 정리함
쓰고 나니까 엄청나게 길어지는구나!
혹여나 틀릴수도 있으니까 100% 신뢰는 마시고..
(최대한 맞다고 생각하고 ㅤㅆㅓㅅ는데..;;)

Beginning linux programming

저어기서~ 자꾸 책가지고 포스팅하길래 나도 따라해 본다!



이거 얼핏보기에는 무쟈게 어려워 보이지만(아니야? )

사실 그다지 어렵지 않소..(적어도 내가 한데까진;;)

이걸 저번 토요일날주문해서 화요일날 받을 예정이었는데 택배가 안오더군

다행이도 3.1절날 오긴했지만..

(사실 이거 기다린다고 얼마나 고생? 했는데..)

지금은 제2장 쉘스크립트를 하는중(아시다 시피? 오늘 못나감..;;)

터미널에서 echo, if for while.. 뭐 이런거 찍는거니까 별루 어렵지 않은데

(사실 1학년때 했으니까.. 기초적인건...)

다음은 파일입출력.. 뭐 이건 방학때 함수써가면서 윤곽은 잡아놨고..

문제는 그뒤.. 미지의 영역....;; 어이쿠 뒤엔 SQL도 나오는구나

(테터가 SQL 쓴다고 한거 같은데....)

음 그뒤에는 소켓..POSIX쓰레드,뮤택스(이건 뭐래? 태어나서 첨들어보네,,;;)

소켓.. X-windows 프로그램도 나오네;

이거 하루에 50페이지씩 해서 뒤에 일부 제외하고 한달내에 끝낼려고 계획을 잡아놨는데 역시

무리인가..(아냐 아냐 억지로 된다고 생각이라도 하자!!)

기타이야기..> 파폭 쓰니까 RSS가 아예. 북마크에 뜨네.. 안들어가고도 업데이트 상황을

알수 있어 편하다..

허접한 도스콘솔모드로 동생한태 자동타이머?(분,초) 하나 만들어 줬는데 좋아하더군..

'Programming > System' 카테고리의 다른 글

MBR(?) 출력 하기  (2) 2007.06.17
screen attach dettach 구별법  (2) 2007.02.12
Beginning Linux Programming Part6-Curses  (2) 2006.06.25
ls -al  (0) 2006.06.21
VIRUS 제작~  (6) 2006.01.03
prev 1 ··· 15 16 17 18 19 next