화일 입출력 과 단어수 라인수 글자수 세는 문제입니다

osho114의 이미지

문제

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;

}

File attachments: 
첨부파일 크기
파일 test4.cpp1.43 KB
antz의 이미지

리눅스를 아시나요?
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();
                }

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.