Verwenden Sie die C-Sprache, um den WC-Befehl zu schreiben – zählen Sie die Anzahl der Zeichen, Wörter und Zeilen

齐天大圣
Freigeben: 2020-10-26 14:10:38
Original
4803 Leute haben es durchsucht

Wir wissen, dass es im Linux-Betriebssystem einen sehr häufig verwendeten Befehl gibt, den Befehl wc, mit dem die Anzahl der Zeichen, Wörter und Zeilen gezählt wird. Versuchen wir heute, mit der C-Sprache ein Programm mit ähnlichen Funktionen zu schreiben (Hinweis: Zum Lesen dieses Artikels sind gewisse Grundkenntnisse der C-Sprache erforderlich).

Wenn Sie dieses Programm schreiben, müssen Sie die Verwendung von zwei Funktionen beherrschen, getchar() und putchar().

getchar wird verwendet, um ein Zeichen aus der Standardeingabe zu lesen, während putchar verwendet wird, um ein Zeichen auf der Standardausgabe auszugeben. Das Zählen der Anzahl der Standardeingabezeichen ist relativ einfach. Solange die Funktion getchar noch Zeichen lesen kann, erhöht sich die Variable, die die Anzahl der Zeichen zählt, um 1. Das Zählen der Zeilenanzahl ist ebenfalls einfach. Solange das gelesene Zeichen das Zeilenumbruchzeichen n ist, wird die Variable der statistischen Funktion um 1 erhöht.

Die Hauptschwierigkeit besteht hier darin, die Anzahl der Wörter zu zählen. Meine Idee besteht darin, eine Statusvariable IN_WORD festzulegen, wenn die gelesenen Zeichen Leerzeichen sind (Leerzeichen, horizontale Tabulatoren und Zeilenumbrüche sind alle Leerzeichen), den IN_WORD-Wert ist 0 und die Anzahl der gezählten Wörter bleibt unverändert. Wenn ein nicht leeres Zeichen gelesen wird, wird die Anzahl der gezählten Wörter um 1 erhöht. Der IN_WORD-Wert ist 1. Wenn der Statuswert 1 ist, auch wenn ein nicht leeres Zeichen Wird ein Zeichen gelesen, ändert sich die Anzahl der Wortstatistiken nicht.

Jetzt posten Sie den Code

#include <stdio.h>
#include <ctype.h>

#define IN_WORD 1
#define OUT_WORD 0

void main (void)
{
    int nc,nw,nl;
    char c,word_flag;
    
    nc = nw = nl = 0;
    word_flag = OUT_WORD;
    
    while ((c = getchar()) != EOF) {
        nc ++;
        
        if (c == &#39;\n&#39;) {
            nl ++;
        }
        
        if (!isspace(c) && word_flag == OUT_WORD) {
            nw ++;
            word_flag = IN_WORD;
        } else if (isspace(c) && word_flag == IN_WORD) {
            word_flag = OUT_WORD;
        } 
    }
    
    printf("%d\t%d\t%d\n", nc, nw, nl);
}
Nach dem Login kopieren

Der obige Code ist sehr einfach. Die drei Variablen nc, nw und nl zählen jeweils die Anzahl der Zeichen, Wörter und Zeilen. Word_flag wird zum Aufzeichnen des Status verwendet. Es gibt zwei Arten von Status: IN_WORD und OUT_WORD.

Als nächstes testen wir den obigen Code. Das Folgende ist ein Text:

Product-minded engineers are developers with lots of interest in the product itself. 
They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions.
They&#39;re someone who would likely make a good product manager if they ever decide to give up the joy of engineering. 
I&#39;ve worked with many great product-minded engineers and consider myself to be this kind of developer. 
At companies building world-class products, product-minded engineers take teams to a new level of impact.
Nach dem Login kopieren

Der obige Text besteht aus insgesamt 86 Wörtern und insgesamt fünf Zeilen.

# cat 1.txt | ./a.out 
542 86 5
Nach dem Login kopieren

Sie sehen, dass das Programm die Anzahl der Zeichen, Wörter und Zeilen normal zählen kann.

Das obige ist der detaillierte Inhalt vonVerwenden Sie die C-Sprache, um den WC-Befehl zu schreiben – zählen Sie die Anzahl der Zeichen, Wörter und Zeilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!