-1

私はCforLinuxの初心者ですが、プログラムが機能せず、問題が発生しないため、サポートが必要です。

これは私のプログラムです。このプログラムは、標準入力から単語、行、文字をカウントします。' 'ただし、、'\t'またはがある場合はカウントされません'\n'

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>

void panic (char *str){
    char s [100];
    sprintf (s, "%s (%d %s)\n", str, errno, strerror (errno));
    write (222, s, strlen (s));
    exit (1);
}
int main (int argc, char *argv[]){
    char c;
    unsigned lines =1;
    int n;
    int letters =0;
    int words =0;
    int countLin=0;
    int countLet=0;
    char resultLine=[100];


    while ((n = read (0, &c, 1))> 0){
        if(c!=' '&&c!='\t'&&c!='\n'){
        letters++;
        if(countLet!=0){
            words++;
            countLet=0;
        }
        if(countLin!=0){
            lines++;
            words++;
            countLin=0;
        } 
    }
        if(c==' '||c=='\t')
            countLet++;
        if(c=='\n')
            countLin++;
    }
    if (n<0)
        panic ("Read");
    sprintf (resultLine, "%d %d %d \n", lines, words, letters);
    if(write(1,resultLine, strlen(resultLine))<0)
        panic("Write");
    return (0);
}

どうもありがとう

4

2 に答える 2

0

次の 2 行の順序を入れ替える必要があります。

    if(c!=' '&&c!='\t'&&c!='\n'){
        letters++;
    ...
    }

それ以外の場合letters、空白文字に対してインクリメントされません

于 2012-10-17T15:43:56.607 に答える
0

変化する:

char resultLine=[100];

に:

char resultLine[100];
于 2012-10-17T14:55:05.340 に答える