화일 입출력 과 단어수 라인수 글자수 세는 문제입니다
문제
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;
}
첨부 | 파일 크기 |
---|---|
test4.cpp | 1.43 KB |
리눅스를 아시나요? textutils 의 wc 를 공부해 보심이 도움
리눅스를 아시나요?
textutils 의 wc 를 공부해 보심이 도움이 되겠네요.
http://freshmeat.net 등에서 "textutils"라고 찾아 보시면 금방 찾을겁니다.
옵션 관련되서는요.
getopt 함수를 보세요.
다음은 예입니다.
Lum7671's Weblog
댓글 달기