-1

我是 C for Linux 的初学者,我需要帮助,因为我的程序不工作而且我没有看到问题。

这是我的程序,该程序计算标准输入中的单词、行和字母。但是当有' ','\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

您需要切换这两行的顺序:

    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 回答