336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Q. 



#include <stdio.h>


int main(){

char str[20]={0};

char *ptr=str;


printf("input str : ");

//scanf("%s", str);

gets(str);

while(*ptr){

if(*ptr>='a' && *ptr<='z'){

*ptr=*ptr-32;

}else if(*ptr >= 'A'&& *ptr <='Z'){

*ptr=*ptr+32;

}


ptr++;

}


printf("str :%s \n", str);


return 0;

}

------------------


Q.


#include <stdio.h>
#include <string.h>

int main(){

char str[20]={0};
char *ptr =str;
int i=0;
while(1){
printf("input str : ");
gets(str);
//if(str=="END"){ //주소기 때문에 바로 비교 불가 -> strcmp (str, "END"); -> 0
if(!strcmp(str, "END")){    
break;
}

i = strlen(str)-1;

for(i=19;i>=0; i--){
printf("%c", *(ptr+i));
}
puts("");
}
return 0;
}


-----------------------

- 메모리 동적 할당  
   -> heap에 저장 됨

원하는 만큼 공간 할당

stack 
data
heap


void* malloc(size_t size);

typedef unsigned int size_t   -> unsigned (양의 정수 )


동적 할당
void*   -> 할당된 공간의 시작주소를 리턴함 
    -> 사용할 때는 반드시 캐스팅을 해야함 
    -> 정해지지 않은 크기를 받아야 할때 
    -> 메모리 관리 효율적 -> 메모리 공간 낭비 방지 
-> 메모리 공간을 다 사용 했을 땐, 할당된 공간을 해제해야 함  -> free()


----------

#include <malloc.h>
#include <stdlib.h>

둘다 malloc 함수 있음, 선택해서 씀



-------------

main(){

int * ptmp =malloc(100);
int * ptmp2=(int*)malloc(100);   (int)로 캐스팅하면 에러 -> int 형태의 주소로 캐스팅 해야함 

free(ptmp);
}


-------------------

- 제한된 heap 공간 
   -> free()

연속으로 free()하면 다른게 해제됨


---------


main(){

int i=0;
int * ptmp=(int*)malloc(sizeof(int)*3);    // sizeof를 이용해 정확한 크기로 공간 할당 
char *pch=(char*) malloc(20);        // 사용자가 알아서 용도를 정하기 

ptmp[0]=10;
ptmp[1]=20;   //포인터를 배열처럼 쓰기 
ptmp[2]=30;

printf("Sum : %d\n", ptmp[0]+ptmp[1]+ptmp[2]);

for(i;i<10;i++){
pch[i]=0x61+i;
}

    pch[i]='\0';    //i= 10     //0   '\0'    NULL

printf("%s\n",pch);

free(ptmp);
free(pch);

}




-----------


- 메인 함수로 인자 전달

   메인함수로 들어가기 전에 전달 -> ex) ls -al   : al이라는 인자 전달하면서 프로그램 실행 

main(int argc, char *argv[])


int argc : 인자의 개수  -> 실행 파일이름도 인자로 여겨서 세어줘야 함
 ls -al  : 인자 3개 

char * argv[] :  전달했던 인자값들이 배열형태로 들어감  -> 문자열 형태 


test.exe -> [0]
인자1  -> [1]
인자2  -> [2]

-------------------


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

int i=0;
printf("전달된 문자열의 수 : %d \n", argc);

for(i=0;i<argc;i++){
printf("%d번째 문자열 : %s \n", i+1, argv[i]);
}
}


------------

비주얼에서 alt +F7  -> Debug  -> Program arguments 에서 인자 입력 가능


-----



%.2f

--------

Coding Practicing 








'Linux' 카테고리의 다른 글

linux compression / decompression  (0) 2015.07.06
vim hex mode  (0) 2015.06.15
iptables and setting ftp server  (0) 2014.08.22
firewall and regulations for control net condition  (0) 2014.08.21
obtaining root position using telnet service system  (0) 2014.08.21
Posted by af334