|
char ch;
char형은 1 byte. 즉 아스키코드 0부터 255까지의 1개를 저장할 수 있는 공간입니다.
이 것을 배열로 선언한다면.. 아스키코드의 배열.. 즉 문자열로 사용할 수 있는 배열이
만들어 집니다.
char st[256];
이렇게 선언하신다면 최대 256개의 문자를 가질 수 있는 문자열이 되는 것입니다.
만약, 가변을 원하신다면...
char *st;
이렇게 포인터로 선언하셔서 malloc과 free를 하시는 방법이 있고, 대부분 모든 가능성을
열어두고 프로그래밍을 하기 때문에 실제 업무에서는 이렇게 대부분 사용됩니다.
우선, 이 것은 이 문제에 대하여 필수 요건은 아니므로 이런게 있다는 식으로만 넘어가고요..
그리고, 아스키코드중에 엔터는 13 번입니다.
즉, 13번이 나온다면, 한 줄이 넘어갔다는 의미입니다.
한 캐릭터씩 읽어서 13번이 아니라면, 한 글자씩 더해주고, 13번이면 문장의 끝이므로 비교를
해서 robot이 맞으면, 이제까지 아스키코드 13번이 나온 횟수를 리턴해 주면 결과 값이 나올
것이라 생각됩니다.
다른 더 좋은 ansi c의 방법으로는 fopen과 fgets을 이용하는 방법이 있습니다. fgets은 1줄씩
읽어들이는 함수로, char st[256]; 이렇게 선언을 하신후, fgets으로 읽어서 robot인지 비교만
하시면 되고요..
더더 좋은 방법으로는 빌더의 vcl 컨트롤인 StringList등으로 LoadFromFile로 파일을 읽어들인
다음, IndexOf 메소드로 찾으면 바로 그 줄이 리턴되는데, 로터스 님께서 사용하시는 베이스가
빌더는 아닌것 같아서 기본 ansi c에서 사용할 수 있는 방식으로만 설명해 드렸습니다.
과제이신듯.. 열심히 하셔서 좋은 성과 거두시길 바랍니다. ^^
로터스 님이 쓰신 글 :
: computer
: data
: robot
: zet
:
: 이렇게 이미 알파벳 순으로 정렬되어있는 word.txt라는 텍스트 파일을 읽어들인 후 검색을 하려고 합니다.
: 검색어로 robot을 치면, 세번째에 있다는 의미로 '3'이 출력되게 하려고 합니다.
: 그런데 아래와 같이
:
: ifstream fin("word.txt");
: char ch;
: while(fin.get(ch))
: ...
:
: 이런 식으로 코딩을 하면 배열에 아래와 같이 입력이 되는 것 같습니다.
: [0][1][2][3][4][5][6][7][8][9][10]...
: c o m p u t e r d a t ...
:
: 이런식이여서, 검색이 제대로 되지 않습니다.
: 저는 아래와 같은 2차원 배열방식으로 데이터를 읽어들이고 싶습니다.
: [0][1][2][3][4][5][6][7]
: [0] c o m p u t e r
: [1] d a t a
: [2] r o b o t
: 그럼 검색을 하기가 한결 수월할 것 같은데요...
:
: 항상 데이터나 검색어로 상수만 써오다가(1,2,3 같은..) 문자열을 처리하려고 하니까 혼란스럽습니다.
: 검색을 문자열로 해야하는 것도 쉽지만은 않군요..
:
: 어쨌든, 위와같이 이차원 배열 형태로 파일입력을 하려면 어떻게 코딩을 해야 하는 것인지 궁금합니다..
: 혹시 저런 방법 말고 더 좋은 방법이 있나요?. 가르쳐주시면 정말 고맙겠습니다.
:
: 그럼 좋은 주말 보내세요~
|