모두의 코드
모두의 코드

총 42 개의 강의로 준비된 씹어먹는 C 언어 강좌를 통해 C 언어의 처음부터 끝까지 배우실 수 있습니다! 특히 악명 높은 C 언어의 포인터나, 어려운 개념들을 충실히 짚고 넘어갑니다.

이 강좌는 2010년에 완결되었지만, 지속적으로 개선 및 보완하고 있습니다.

C 언어 문법을 아시는 분들이라면, 씹어먹는 C++ 강좌를 통해 C++ 기초 부터 최근의 C++ 17 까지 모든 내용을 배우실 수 있습니다. C 언어와 C++ 의 기본적인 문법이 비슷하기 때문에, C 언어를 어느 정도 아는 독자를 가정하여 쓰여져 있습니다.

이 강좌는 2020년에 완결되었고 총 50 개의 강좌가 준비되어 있습니다.

사이트 내에서 검색 하기
C 언어 레퍼런스
표준 입출력 라이브러리 stdio.h
문자열 관련 라이브러리 string.h
시간 관련 라이브러리 time.h
C ++ 레퍼런스
문자열 라이브러리 string
알고리즘 라이브러리 algorithm
최근 댓글
서유진 06.01
#include <iostream> #include <string.h> class string { char *str; int len; public: string(char c, int n); // 문자 c 가 n 개 있는 문자열로 정의 string(const char *s); string(const string &s); ~string(); void add_string(const string &s); // str 뒤에 s 를 붙인다. void copy_string(const string &s); // str 에 s 를 복사한다. void print_string(); int strlen(); // 문자열 길이 리턴 }; string::string(char c,int n){ len = n; //길이는 보이는 문자들의 길이. 널 미포함이다. str = new char[len+1]; memset(str, c, len); str[len] = '\0'; } // string::string(const char* s){ // 이미 문자가 있어서 복사해서 초기화 // len = strlen(s)+1; // } // 이 코드는 strlen 부분에서 오류가 난다. 개발 환경이 문제인지 뭐가 문제인지 알아내보자. string::string(const char* s){ len = 0; for(int i=0;;i++){ if(s[i]) len++; else break; } str = new char[len+1]; strcpy(str,s); } string::string(const string &s){ len = s.len; str = new char[len+1]; strcpy(str, s.str); } void string::add_string(const string &s){ char* tmp_str= new char[len+s.len+1]; strcpy(tmp_str, str); strcat(tmp_str, s.str); len+=s.len; delete [] str; str = tmp_str; } void string::copy_string(const string &s){ delete [] str; str= new char[s.len+1]; strcpy(str, s.str); } int string::strlen(){ return len; } string::~string(){ delete [] str; } void string::print_string() { std::cout << str << std::endl; } int main(){ } 제가 작성한 코드입니다. 여기서 string(const char* s)이 함수를 구현할 때 strlen으로 문자열 s의 길이를 구하려했는데, 만약 시도하면 too many arguments to function call, expected 0, have 1; 이런식으로 인수가 많다는 오류가 발생합니다. std::strlen 이런식으로도 해보고 찾아봐도 안되는데 이유가 궁금합니다. 결국 원인을 찾지 못하였습니다.
박건희 05.31