목록프로그래밍/C (25)
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을 만들었다는 의미이다.하지만 그렇다면 중간에 문자열의 끝을 알리는 널 문자가 있는데 왜 끝까지 출력 되는지 의문일 수 있다. 그 이유는 첫번째 인자의 문자열의 마지막 공간부터 채워 넣기 때문이다.즉, 널 문자를 지우고 두번째 인자..
문자열을 복사하는 함수 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 ..