- 프로그램 종료
값에 의한 예외 처리
if(num==-1){
break;
}
---------
- 문자가 입력이 안되는 프로그램
버퍼 안에 입력된 문자가 계속 존재, 차 후에 값 입력 불가 -> fflush(stdin);
입력이 안된다 -> 다른 문자가 들어 왔다
scanf() 의 리턴값은 -> 성공한 입력 개수 ->
#include <string.h>
#include <stdio.h>
float hei, wei;
char exit[5]={0};
hei=wei=0;
while(1){
if(scanf("%f %f, &hei, &wei)!=2){ // scanf의 리턴 값 개수로 문자인지 숫자인지 확인
gets(exit);
printf("exit: %s\n", exit);
if(!strcmp(exit,"exit")){
printf("종료합니다");
break;
}
printf("문자는 입력할 수 없습니다");
}
fflush(stdin);
printf("");
-------------
- 포인터 정리
char array[6]={'H','e','l','l','o','\0'};
ptr=array;
printf("%c\n",array[1]);
printf("%c\n",*(ptr+2));
printf("%c\n",*array+4);
printf("%c\n",ptr[4]);
printf("\n");
ptr=array[3];
printf("%c\n",*ptr++));
printf("%c\n",array++); //error
printf("%c\n",*ptr);
printf("\n");
printf("%c\n",*ptr--);
printf("%c\n",*ptr+5);
printf("\n");
ptr=array[4];
printf("%c\n",*--ptr);
printf("%c\n",*(array+3));
------------------
어셈블리어로 문자열 함수 구현
-----------
- 문자열
문자의 배열
문자열은 NULL 문자로 끝난다
strlen(); // 문자열의 길이 리턴
strcpy(); //문자열 복사
strcat(); //문자열 이어 붙이기
strcmp(); //문자열 비교
strstr(); //문자열 내 특정 문자열 검색
strchr(); //문자열 내 특정 문자 검색
----------------
- strlen() // NULL 문자를 제외한 문자의 개수 리턴
#include <stdio.h>
#include <string.h>
int main(){
char * string ="Hello";
int nLen =0;
nLen=strlen(string);
printf("string = %s \n", string);
printf("nLen = %d \n", nLen);
return 0;
}
------
mystrlen 구현
int main(){
char * string ="Hello";
int nLen =0;
int mystrlen(char* string);
nLen=mystrlen(string);
printf("string = %s \n", string);
printf("nLen = %d \n", nLen);
return 0;
}
int mystrlen(char * str){
int i=0;
while(str[i]!=0){ // while(*s)
i++;
}
return i;
}
---------------------------------------
- strcpy()
int main(){
char src[10]="Hello";
char dest[10]={0};
char* tmp=NULL;
printf("dest : %s \n", dest);
tmp=strcpy(dest, src);
printf("tmp : %s \n", tmp);
printf("dest : %s \n", dest);
printf("tmp Addr : %p, dest Addr : %p\n", tmp,dest);
return 0;
}
------
포인터 이용
------
mystrcpy() 구현
char* mystrcpy(char* d, char*s){
char *tmp=d;
while(*s!=0){ // while(*s)
*d=*s;
s++;
d++;
}
return d;
}
-----------------------
- strscat()
int main(){
char dest[20]="Hello";
char cat[10]="i2sec";
char* tmp=NULL;
printf("dest : %s \n",dest);
tmp=strcat(dest, cat);
printf("tmp : %s \n", tmp);
printf("dest : %s \n", dest);
printf("tmp Addr : %p, dest Addr : %p \n", tmp, dest);
return 0;
}
------
mystrcat() 구현
--------------------------
- strcmp()
int main(){
char str1[10]="Hello";
char str2[10]="He1l0";
char str3[10]="Hpllo";
int nResult=0;
nResult=strcmp(str1,str2);
printf("nResult : %d \n",nResult);
nResult=strcmp(str1,str3);
printf("nResult : %d \n",nResult);
str3[1]='e';
nResult=strcmp(str1,str3);
printf("nResult : %d \n", nResult);
return 0;
}
mystrcmp() 구현
----------------------------
- strstr() // 찾은 곳의 시작 주소를 넘겨줌
int main(){
char string[20]="apapple";
char *search="app";
char *result =NULL;
result=strstr(string, search);
printf("string addr : %p \n", string);
printf("result addr : %p \n", result);
printf("result : %p \n", result);
return 0;
}
mystrstr() 구현
-----------------------------
- strchr()
int main(){
char string[20]="Test Hello";
char search ='e';
char *result=NULL;
result=strchr(string, search);
printf("string addr : %p \n",string);
printf("result addr : %p \n",result);
printf("string : %p \n",result);
return 0;
}
mystrchr() 구현
-----------------------------
'C / C++' 카테고리의 다른 글
extra efforts (0) | 2014.09.29 |
---|---|
malloc 개념 보충 (0) | 2014.09.05 |
many questions (0) | 2014.08.28 |
pointer and array (0) | 2014.08.27 |
function and pointer (0) | 2014.08.26 |