1
2
3
#include <string.h>
 
size_t strlen(const char * s);
cs

전달된 문자열의 길이를 반환하되, 널 문자는 길이에 포함하지 않는다.

Posted by 知彼知己百戰不殆
,

출력 버퍼의 비워짐 : 출력버퍼에 저장된 데이터가 버퍼를 떠나서 목적지로 이동됨

출력 버퍼가 비워지는 시기는 버퍼가 꽉 찼을 때 비워지는 버퍼도 있고, 하나의 문장이 완전히 입력되었을 때마다 비워지는 버퍼도 있다.

fflush(stdout);  // 표준 출력버퍼를 비우라는 명령

1
2
3
#include <stdio.h>
 
int fflush(FILE * stream);
cs

 

입력 버퍼의 비워짐 : 데이터의 소멸을 의미

가끔 입력 버퍼에 남아있는 불필요한 데이터의 소멸을 위해서 입력버퍼를 비워야 하는 경우가 종종 있다.

Posted by 知彼知己百戰不殆
,

scanf 함수는 공백이 포함된 형태의 문자열을 입력 받는데 제한이 있다. 그러나 puts, fputs는 제한이 없다

 

문자열 출력 함수 : puts, fputs

puts : 출력의 대상이 stdout으로 고정, 이 함수가 호출되면 문자열 출력 후 자동으로 개행(\n)이 이루어짐

fputs : 두 번째 인자를 통해서 출력의 대상을 결정 가능, 문자열 출력 후 자동으로 개행이 이루어지지 않음

1
2
3
4
#include <stdio.h>
 
int puts(const char * s);
int fputs(const char * s, FILE * stream);
cs

→ 성공 시 음수가 아닌 값을, 실패 시 EOF 반환

 

문자열 입력 함수 : gets, fgets

gets : stdin으로 부터 문자열을 입력 받음

fgets : 문자열을 입력 받을 곳을 설정 가능하며, size도 설정할 수 있다, 이 함수는 \n을 만날 때까지 문자열을 읽어 들이는데, \n을 제외시키거나 버리지 않고 문자열의 일부로 받아들인다. (우리가 입력 한 엔터 키의 정보까지도 문자열의 일부로 저장됨)

1
2
3
4
#include <stdio.h>
 
char * gets(char * s);
char * fgets(char * s, int n, FILE * stream);
cs

ex)

1
2
3
4
5
6
7
#include <stdio.h>
 
int main ()
{
   char str[7];
   gets(str);
}
cs

 

1
2
3
4
5
6
7
#include <stdio.h>
 
int main ()
{
   char str[7];
   fgets(str, sizeof(str), stdin);
}
cs

↑ 여기서 str배열 사이즈인 7값이 설정 돼 있지만 "123456789"의 문자열을 받게 될 경우 str배열에는 "123456"만 값이 저장된다. 이유는 문자열의 끝에 자동으로 널 문자가 추가되므로.

 

 

 

 

 

Posted by 知彼知己百戰不殆
,

문자 출력 함수 : putchar, fputc

putchar : 인자로 전달된 문자 정보를 stdout으로 표현되는 표준 출력 스트림으로 전송하는 함수

fputc : stdout(표준출력-모니터) 뿐만이 아니라 파일을 대상으로도 데이터를 전송 할 수 있다.

          (FILE * stream에 stdout을 전달하면 putchar와 동일한 함수)

 

1
2
3
4
#include <stdio.h>
 
int putchar(int c);
int fputc(int c, FILE * stream);

cs

→ 함수 호출 시 쓰여진 문자 정보 반환, 실패시 EOF 반환(End Of File)

EOF : 파일의 끝을 표현하기 위해서 정의해 놓은 상수

fgetc함수와 getchar함수는 언제 EOF 반환?

- 함수 호출의 실패

- 윈도우 : Ctrl + Z , 리눅스 : Ctrl + D  입력되는 경우

 

문자 입력 함수 : getchar, fgetc

getchar :  stdin(표준입력-키보드)으로 표현되는 표준 입력 스트림으로부터 하나의 문자를 입력 받아서 반환하는 함수, 하나의 문자를 입력 받음

문자가 아닌 공백을 포함하는 문장을 입력해도 되는데, 문장이 입력되면 문장을 구성하는 문자의 수만큼 getchar 함수가 호출되면서 모든 문자를 읽어 들인다.

fgetc : 하나의 문자 입력 받음, getchar와 다른 점은 문자를 입력 받을 스트림을 지정할 수 있다.

1
2
3
4
#include <stdio.h>
 
int getchar(void);
int fgetc(FILE * stream);
cs

 

 

Posted by 知彼知己百戰不殆
,

size_t형과 unsigned int

언어/C 2015. 12. 11. 11:54

size_t : unsigned int, 문자열이나 메모리의 사이즈를 나타낼 때 사용

unsigned int를 typedef unsigned int size_t;  (size_t 라는 이름으로 정의해 놓은 것)

size_t는 32비트 운영체제에서 '부호없는 32비트 정수', 64비트 운영체제에서는 '부호없는 64비트 정수'

unsigned int 또는 int는 64비트 OS라고 해서 항상 64비트 정수는 아니다. 여전히 32비트 일 수도 있음.

이것이 size_t형과 unsigned int형의 차이

Posted by 知彼知己百戰不殆
,