文字列入力の受信、文字、文字数、列数の出力
3344 ワード
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>
#include <float.h>
#include <stdbool.h>
#include <complex.h>
#include <string.h>
#include <math.h>
#include<stdbool.h>
#include<ctype.h>
#define STOP '.'
int main()
{
char c;
int n_chars = 0;
int n_lines = 1;
int n_words = 1;
bool word_flag = false;
bool word_flag1 = false;
printf("Enter text:\n");
while ((c = getchar()) != STOP) {
if (c == '\n')
n_lines++;
if (isspace(c))
word_flag = true;
if (word_flag && !isspace(c) && word_flag1)
{
n_words++;
word_flag = false;
word_flag1 = false;
}
if (!isspace(c))
{
n_chars++;
word_flag1 = true;
}
}
if (n_chars == 0) {
n_words = 0;
}
printf("Characters = %d, Words = %d, Lines = %d\n", n_chars, n_words, n_lines);
return 0;
}
文字列を入力すると、文字、単語、列数のプログラムが出力されます.getchar()で文字列を受信する場合STOP(.)句点に出会うまで、無限の周りを回ります.
if (c == '\n')
n_lines++;
改行が発生した場合は+1カラムです.
if (isspace(c))
word_flag = true;
スペースに遭遇した場合は、word flagをtrueに変換します.△何度かスペースを入力したり、単語を書いたりするので、旗の役割を果たす変数word flagを作成します.
if (word_flag && !isspace(c) && word_flag1)
{
n_words++;
word_flag = false;
word_flag1 = false;
}
単語flagとword flag 1がtrueの場合、単語+1とword flagとword flag 1をfalseに再変換します.word flagはtrueにスペースが必要で、word flag 1はtrueに改行または書き込み文字が必要です.つまり、改行や文字を区切って入力するだけで、単語は+1になります.
if (!isspace(c))
{
n_chars++;
word_flag1 = true;
}
入力した文字がスペースでない場合は+1を使用し続け、word flag 1をtrueに変換します.
if (n_chars == 0) {
n_words = 0;
}
intn wordsの初期値は1なので、何も入力せずに句点のみ入力し、終了時に単語の個数を0に変更します.
結果ウィンドウ
改行時
何も入力しないで終わる
Reference
この問題について(文字列入力の受信、文字、文字数、列数の出力), 我々は、より多くの情報をここで見つけました https://velog.io/@ehddnjs7852/문자열입력받고-문자단어개수열개수-출력하기-ici86je4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol