2011. 3. 1. 18:51
#include <string.h>

strcpy(str1, str2) :문자열 복사

strncpy(str1, str2, n) : n개만큼 문자열 복사(str2를 str1에)

strcat(str1, str2) :문자열 추가
strncat(str1, str2, n) :n개 만큼 문자열 추가

strcmp(str1, str2) :문자열 비교(같을 시 0을 반환)
strncmp(str1, str2, n)

strstr(str1, str2)
=>원형 : char* strstr(const char *str1, const char *str2)
str1안에 str2 문자열이 있으면 해당 문자열의 위치를 리턴
없으면 0(null)을 리턴



<문자열을 숫자로 변환하는 함수>
#include <stdlib.h>

int atoi(char *ptr); //문자열을 int형 데이터로 변화
long atol(char *ptr); //문자열을 long형 데이터로 변화
double atof(char *str); //문자열을 double형 데이터로 변환


<대소문자의 변환을 처리하는 함수들>
#include <ctypes.h>

int toupper(int c); //소문자를 대문자로
int tolower(int c); //대문자를 소문자로

'Language > C언어' 카테고리의 다른 글

매크로와 전처리  (0) 2011.03.02
열거형(enum) 자료형  (0) 2011.03.01
문자단위 입.출력 함수(putchar, getchar, fputs, fgets)...etc  (0) 2011.02.28
배열포인터  (0) 2011.02.27
포인터와 const키워드  (0) 2011.02.26
Posted by Triany
2011. 2. 28. 19:23
문자 단위 입출력 함수
1) 문자출력함수
 -하나의 문자를 출력할 때 일반적으로 사용하는 함수는 putchar함수와 fputc함수이다.
 int putchar(int c);
 int fputc(int c, FILE* stream);
◇putchar함수 : 함수 호출 시 인자로 전달된 문자를 '표준 출력 스트림(stdout)'으로 출력해주는 역할을 하는 함수. 즉 모니터에다가 하나의 문자를 출력해 주는 함수

◇fputc함수 : 함수 호출 시 인자로 전달된 문자를 '표준 출력 스트림(stdout)'으로 출력해주는 역할을 하는 함수. 즉 모니터에다가 하나의 문자를 출력해 주는 함수 +.. 문자를 출력할 스트림을 지정할 수 있다!(모니터뿐 아니라 파일에도 문자를 출력(저장)할 수 있는 함수)
fputc 함수의 두 번째 인자 stream은 문자를 출력할 스트림을 지정하기 위해서 사용된다. 따라서 이 인자에다가 표준 출력 스트림을 의미하는 'stdout'을 인자로 전달하게 되면 putchar함수와 완전히 동일한 함수가 된다. fputc함수는 파일 입.출력에서 주로 사용하게 된다.


※참고 : 오류 발생 시 반환되는 EOF의 실제 값을 -1이다.


2)문자 입력 함수
하나의 문자를 입력받을 때 일반적으로 사용하는 함수는 getchar함수와 fgetc함수이다.
 int getchar(void);
 int fgetc(FILE* stream);

◇getchar 함수: '표준 입력 스트림(stdin)'으로부터 한 문자를 입력받아서 반환해 주는 함수이다. 따라서 키보드로부터 하나의 문자를 입력받는 함수라고 할 수 있다.

◇fgetc함수:'표준 입력 스트림(stdin)'으로부터 한 문자를 입력받아서 반환해 주는 함수이다. 따라서 키보드로부터 하나의 문자를 입력받는 함수라고 할 수 있다.+.. 문자를 입력받을 스트림을 지정할 수 있다는 특징.(fgetc함수를 이용하면 키보드뿐만 아니라 파일로부터도 데이터를 입력받을 수 있다.)


#include <stdio.h>

int main()
{
 char ch=0;
 while(ch != 'q')
 {
  ch=getchar();    //fgetc(stdin)와 같다.
  putchar(ch);     //fputc(ch, stdout)와 같다.
 }

 return 0;
}



3)EOF에 대해서...
 오류 발생 혹은 파일의 끝에 도달했을 경우 EOF를 리턴.
 EOF가 실제로 지니고 있는 값을 -1이다.
 오류발생시 반환 + (fgetc나 getchar 함수가 파일의 끝에 도달하는 경우에도 EOF가 반환)
 getchar : 키보드로부터 Ctrl-Z키를 입력하는 경우에 EOF를 반환

 #include <stdio.h>

int main()
{
 char ch=0;
 while(ch != EOF)
 {
  ch=getchar();
  putchar(ch);
 }
 printf("program 종료 \n");

 return 0;
}



문자열 단위 입.출력함수
1)문자열 출력 함수
하나의 문자열을 출력할 때 일반적으로 사용하는 함수는 puts 함수와 fputs함수이다.
 int puts(const char* s);
 int fputs(const char* s, FILE* stream);
puts 함수: 문자열을 표준 출력 스트림(stdout)으로 출력하기 위해 사용하는 함수이다. 인자로 전달되는 포인터는 문자열을 가리키고 있어야 한다.
문자열을 출력한 다음에 자동으로 줄을 바꿔준다.

fputs함수 : 문자열을 표준 출력 스트림(stdout)으로 출력하기 위해 사용하는 함수이다. 인자로 전달되는 포인터는 문자열을 가리키고 있어야 한다. +.. 문자열을 출력할 스트림을 선택할 수 있다.
문자열을 출력한 다음에 자동으로 줄을 바꿔주지 않는다.

 #include <stdio.h>

int main()
{
 fputs("fputs 함수에 의한 출력, ", stdout);
 fputs("I Love Linux ", stdout);

 fputs("\n", stdout); //한 줄 건너 뛰기 위해서

 puts("fputs 함수에 의한 출력, ");
 puts("I Love Linux ");
}
 



2) 문자열 입력 함수
하나의 문자열을 입력받을 때 일반적으로 사용하는 함수는 gets함수와 fgets함수이다.
 char* gets(char* s);
 char* fgets(char* s, int n, FILE* stream);
◇gets 함수: 문자열을 입력받는 함수이다. 우선 입력받을 문자열을 저장하기 위한 배열은 선언한 다음, 배열의 시작 주소(배열이름이 배열의 시작주소이다)를 인자로 전달하면서 gets 함수를 호출하게 되면 표준 입력 스트림(키보드)로부터 데이터를 입력받는다.
(하지만 이 함수는 자제해야 함. 미리 할당해 놓은 배열의 크기보다도 큰 길이의 문자열이 들어오게 되면 배열의 Overflow가 발생)

◇fgets함수 :gets함수의 잠재적 위험성 때문에 실제 프로그램에서는 fgets함수만을 사용. fgets함수의 두번째 인자 n은 입력받을 수 있는 최대 문자열의 길이를 나타낸다. 따라서 문자열을 입력받을 배열의 길이를 인자로 전달하면, 그 이상의 문자를 읽어들이는 일은 발생하지 않는다. 마지막으로 세 번째 인자 stream은 입력을 받을 스트림을 지정하기 위해 사용된다.

 #include <stdio.h>

int main()
{
 char str[10];

 fputs("문자열을 입력 하세요: ", stdout);
 fgets(str, sizeof(str), stdin);

 fputs("입력된 문자열: ", stdout);
 fputs(str, stdout);

 return 0;
}
 

※주의 : 배열의 길이가 10이기 때문에 fgets함수 호출시 두 번째 인자(n)에도 10을 전달하였음에도 불구하고 총 9개의 문자가 입력된다. 이는 fgets함수가 문자열을 입력받는 함수이기 때문이다. C에서 문자열이 되기 위한 기본조건은 끝에 반드시 NULL 문자가 들어가야 한다.
(즉 fgets 함수는 입력받을 수 있는 최대 문자열의 길이 n을 초과하는 문자열이 입력되는 경우에는 n-1개 까지의 문자만 입력을 받고, 마지막에 NULL 문자를 삽입해 준다.)


'Language > C언어' 카테고리의 다른 글

열거형(enum) 자료형  (0) 2011.03.01
문자열 처리함수  (0) 2011.03.01
배열포인터  (0) 2011.02.27
포인터와 const키워드  (0) 2011.02.26
scanf 함수 호출 시 &를 붙이는 이유  (0) 2011.02.26
Posted by Triany
2011. 2. 27. 02:09

int (*pArr)[4];
: int arr1[2][4], int arr2[3][4]와 같은 배열을 가리킬 수 있는 포인터
이렇듯 배열을 가리킬 수 있다고 해서 배열 포인터라 한다.

void show_data(int (*ptr)[4], int a);
    ==
void show_data(int ptr[][4], int a);  <= 함수의 매개변수 선언시에만 가능

#include <stdio.h>

void show_data(int (*ptr)[4], int a);
int main(void)
{
 int arr1[2][4]={1, 2, 3, 4, 5, 6, 7, 8};
 int arr2[3][4]={{1}, {2}, {3}};

 show_data(arr1, 2);
 show_data(arr2, 3);
 
 return 0;
}

void show_data(int (*ptr)[4], int a)
{
 int i, j;
 printf("-------Start Print----------\n");
 for(i=0; i<a; i++)
 {
  for(j=0; j<4; j++)
   printf("%d ", ptr[i][j]);
  printf("\n");

 }

}





☆int (*pArr)[4] 와 int* pArr[4]의 차이점☆
int (*pArr)[4]는 배열을 가리키는 포!인!터이다. (배열포인터)
  int형 변수를 요소로 지니고 포인터 연산시 4칸씩 이동하는 2차원 배열을 가리키는 포인터이다.


int* pArr[4]는 배!열!이다.(포인터배열).
  int형 변수의 주소 값 4개를 저장할 수 있는 배열이다.

Posted by Triany