화일 입출력 과 단어수 라인수 글자수 세는 문제입니다
문제
count -l test.txt : 입력 화일의 내용을 standard output에 출력한 후 test.txt 파일의 라인수를 출력한다.
count -w test.txt : 입력 화일의 내용을 standard output에 출력한 후 test.txt 파일의 단어수를 출력한다.
count -c test.txt : 입력 화일의 내용을 standard output에 출력한 후 test.txt 파일의 문자수를 출력한다.
count test.txt : 입력 화일의 내용을 standard output에 출력한 후 test.txt 파일의 라인수, 단어수, 문자수 등을 출력한다.
입력 파일이 없다면 오류 처리를 한다.
count < test.txt : 입력 파일이 제시되지 않는다면 standard input으로부터 텍스트 데이터를 입력받는다.
-l, -w, -c 등의 옵션외에는 오류 처리를 한다. -L, -W, -C 등의 대문자 옵션도 동일하게 받아드린다.
이게 문제인데요,, 처음으로 파일 입출력 을 코딩한거예요,,
C++ 에서 파일 입출력도 처음 독학으로 한거구요,,
UNIX에서 옵션걸기.. 도 처음알았답니다
main(argc,argv[]) 가 있는지 몰랐었어요,
그래서, 이 문제를 푸는데 많은 시간이 걸렸는데..
지저분하게 짜긴짰는데... 여기까지가 능력인가 보네요,
error를 못찾겠어요,,
이게 제 레폿이긴한데.레폿은 어제제출을 했는데요,,
도저히 이게 안되서 너무 궁금해요,,
고수님들의 조언 바랍니다..
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
ifstream file;
int line=0,word=0,ch=0,wc=0;
char c;
file.open(argv[2],ios::in);
while ((c=getchar())!=EOF){
if(( ch!=' ') && (ch!='\n') && (ch!='\t') && (ch!='\0')) {
ch++; wc++;
}
else if(ch=='\n') {
line++; wc=0;
}
else wc=0;
if(wc==1){
word++;
}
if(argc==3){
while (argv[1][0] == '-'){
//argv[1][1]에 실제 옵션 문자가 들어있다
switch (argv[1][1]){
case 'l':
cout << "라인수 출력 " <<line <<endl;
break;
case 'w':
cout << "단어수 출력 " <<word<<endl;
break;
case 'c':
cout << "문자수" <<ch <<endl;
break;
case 'L':
cout << "라인수 출력 " <<line <<endl;
break;
case 'W':
cout << "단어수 출력 " <<word<<endl;
break;
case 'C':
cout << "문자수" <<ch <<endl;
break;
}
++argv;
--argc;
}
}
else if(argc==2){
while (argv[1][1]){
if(argv[1]=='test.txt'){
//file.open(argv[2],ios::in);
cout <<"라인수 "<<line<<endl;
cout <<"단어수 "<<word<<endl;
cout <<"문자수 "<<ch<<endl;
}
else if(argv[1]=='<'){
file.open(argv[2],ios::in);
break;
}
}
}
return 0;
}
| 첨부 | 파일 크기 |
|---|---|
| 1.43 KB |


리눅스를 아시나요? textutils 의 wc 를 공부해 보심이 도움
리눅스를 아시나요?
textutils 의 wc 를 공부해 보심이 도움이 되겠네요.
http://freshmeat.net 등에서 "textutils"라고 찾아 보시면 금방 찾을겁니다.
옵션 관련되서는요.
getopt 함수를 보세요.
다음은 예입니다.
while ((c = getopt (argc, argv, "f:qiaxh")) != -1) switch (c) { case 'f': memset(pUpdate_File, 0x00, SIZEBUFFER1K); strcpy(pUpdate_File, optarg); b_isDefineFile = TRUE; b_Usage = FALSE; case 'q': b_isReindexing = FALSE; break; case 'i': b_isBackground = FALSE; break; case 'h': usage(); return 0; case '?': if (isprint (optopt)) fprintf(stderr, "Unknown option '-%c'.\n", optopt); else fprintf(stderr, "Unknown option character '\\x%x'.\n", optopt); default: usage(); }Lum7671's Weblog
댓글 달기