2014. 8. 29. 17:29
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 |