목록전체 글 (77)
Jiyong's STUDY
#include int atoi(const char *str);long atol(const char *str);double atof(const char *str); 문자열의 내용을 각 type형으로 변환시키는 함수이다. int main(){char str1[]="123"; char str2[]="3.14"; printf("%s, %d, ", str1, atoi(str1));printf("%s, %g", str2, atof(str2));} 결과 >> 123, 123, 3.14, 3.14 문자열에 저장된 숫자를 실수형 또는 정수형으로 변환이 불가능한 것은 아니지만그 과정이 번거롭기 때문에 이 함수들을 알면 편리할 수 있다. 그리고 이 함수들에게 전달되는 인자는 반드시 숫자로만 이루어져야 한다.
문자열을 비교하는 함수 strcmp, strncmp #include int strcmp(const char *s1, const char *s2); int main(){printf("%d, ", strcmp("abc", "abc");printf("%d", strcmp("abc", "abcc");} 결과 >> 0, -1 strcmp 함수는 인자로 전달된 두 문자열의 크기를 비교한다.s1와 s2가 같은 경우에는 0을 반환한다.s1이 더 크면 0보다 큰 값을 반환하며 s2가 더 크면 0보다 작은 값을 반환한다.여기서 0보다 크거나 작은 값은 컴파일러마다 다른 값이 나오므로그 값은 무슨 값인지 생각 할 필요가 없다. 단지 두 문자열이 같으면 0, 다르면 0이 아니라는 것만 알아도 충분하다. #include int..
문자열을 덧붙이는 함수 strcat, strncat #include char *strcat(char *dest, const char *src); int main(){char str1[20]="12345";char str2[20]="67890";strcat(str1, str2);puts(str1);} 결과 >> 1234567890 strcat은 첫번째 인자에 두번째 인자의 문자열을 덧붙이는 함수이다.즉 12345 \0 뒤에 67890 \0을 덧붙여 12345 \0 67890 \0을 만들었다는 의미이다.하지만 그렇다면 중간에 문자열의 끝을 알리는 널 문자가 있는데 왜 끝까지 출력 되는지 의문일 수 있다. 그 이유는 첫번째 인자의 문자열의 마지막 공간부터 채워 넣기 때문이다.즉, 널 문자를 지우고 두번째 인자..
입출력 스트림 프로그램과 그 환경(기기) 사이에서 입출력이 이루어질 때,데이터의 이동이 직접(direct) 되는 것이 아니라 스트림(stream)이라는 매개체를 거쳐 이동된다. 표준 스트림에는 3가지가 있는데 표준 입력 스트림 (stdin) 표준 출력 스트림 (stdout)표준 에러 스트림 (stderr) 일반적으로 표준 입력 스트림은 키보드에서 받아오며,표준 출력 스트림과 표준 에러 스트림은 모니터로 출력한다.이는 별도의 리다이렉션을 통해서 변경할 수 있다. 일반적일 때, 키보드 >>> (입력 스트림) >>> 프로그램 >>> (출력 스트림 or 에러 스트림) >>> 모니터 의 형식으로 이어지게 된다. 버퍼(buffer) 버퍼는 쉽게 생각하면 임시 저장소라고 생각하면 된다. 프로그램에서 입출력이 일어날 ..
문자열을 복사하는 함수 strcpy, strncpy #include char *strcpy(char *dest, cont char *src); int main(){char str1[20]="Hello World";char str2[20];strcpy(str2, str1);puts(str2);}결과 >> Hello World strcpy는 두 인자를 받아 두번째 인자에 저장된 문자열을 첫번째 인자로 복사한다.이 함수에서 보면 str1의 저장된 내용을 str2로 복사했음을 알 수 있다. 하지만 strcpy는 사용시 위험이 있는데 int main(){char str1[20]="Hello World";char str2[5];strcpy(str2, str1);puts(str2);}결과 >> Hello World ..
int scanf(const char *format, ...);scanf 함수의 경우에는 공백단위로 입력받는다.즉 how are you 라는 문장을 입력한다고 하면 공백단위로how만 입력받게 되므로 문자열을 입력받기엔 부적합하다. #include int main(){char str[20];scanf("%s", str);printf(str);} 에서 how are you를 입력했다면how만 나오게 된다. char *gets(char *s);gets 함수의 경우에는 줄바꿈 단위로 입력받는다.엔터를 입력하기 전까지 문자열을 입력받는다.즉 줄을 읽어서 입력한다고 보자. #include int main(){char str[20];gets(str);puts(str);} 에서 how are you를 입력했다면how ..