Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何计算除双引号或单引号以外的字符数?_C - Fatal编程技术网

C 如何计算除双引号或单引号以外的字符数?

C 如何计算除双引号或单引号以外的字符数?,c,C,我对编程和通过一本书学习C很陌生 本书的作者解释了逻辑运算符AND、NOT和OR,并给出了下面的示例,该示例计算除双引号或单引号和句点字符外的字符数 除了引号和句号之外,我不明白它是如何计算字符数的。我理解使用AND运算符时,这两个条件都应为真 如果ch!=''&&ch!='\,,正在检查输入的字符是否为或,如果不是,则增加字符数,否则不增加。如果用户输入d或,它将满足条件,因为的ASCII值不等于或',计数将增加。我将尝试向您解释代码的主要部分: while ((ch = getcha

我对编程和通过一本书学习C很陌生

本书的作者解释了逻辑运算符AND、NOT和OR,并给出了下面的示例,该示例计算除双引号或单引号和句点字符外的字符数

除了引号和句号之外,我不明白它是如何计算字符数的。我理解使用AND运算符时,这两个条件都应为真


如果ch!=''&&ch!='\,,正在检查输入的字符是否为或,如果不是,则增加字符数,否则不增加。如果用户输入d或,它将满足条件,因为的ASCII值不等于或',计数将增加。

我将尝试向您解释代码的主要部分:

    while ((ch = getchar()) != PERIOD)
    {
在这里,它将检查文本中包含的每个字符,只要字符不同于句点,因此它只检查句子中的所有字符

if (ch != '"' && ch != '\'')
charcount++;
}

在这里,如果条件为true,则向charcount添加1。如果要使if返回true,则两个ch!=''还有ch!='\一定是真的!&&运算符是,and要返回真1,两个条件都必须等于1。因此,如果字符等于或,则AND将返回0,因此我们不会将1添加到charcount中。

对于getchar返回并从输入流存储在ch中的每个字符,如键盘或文件,它将测试它是否为双引号ch!=''如果这不是一个引语,那么它就是\

\是转义字符,表示“\是字符”

如果两者都不是,那么它将递增计数器charcount++


只要getchar不返回周期ch=getchar!=周期如果存在,则不会计算周期,因为代码将立即跳出威尔循环。

您可以使用“继续”跳过:

#include<stdio.h>
#define PERIOD '.'

int main(void)
{
    char ch;
    int charcount = 0;

    while ((ch = getchar()) != PERIOD)
    {
        if (ch != '"' && ch != '\''){
            continue;
        }
            charcount++;
    }
    printf("There are %d non-quote characters.\n", charcount);
    return 0;
}

如果字符不同于且不同于,则charcount将递增。如果ch!=“”&&,您是否理解此条件ch!='\?否则,我认为你最好从一些基本的C语言书开始。原始代码按预期工作,OP只是不理解它。您可以看到有10个非引号字符,而不是8.3+3''+2'=8。。。你能解释为什么是10个非引号字符吗。所以有18个非引号字符,我不知道为什么我忽略了蓝色的字符,但是OP需要这8个非引号字符…我对他的意图和打印消息感到困惑。他只需要有人解释他在书中读到的代码,因为他是C的新手,他不想在这里写任何代码这里的代码来自于书。
#include<stdio.h>
#define PERIOD '.'

int main(void)
{
    char ch;
    int charcount = 0;

    while ((ch = getchar()) != PERIOD)
    {
        if (ch != '"' && ch != '\''){
            continue;
        }
            charcount++;
    }
    printf("There are %d non-quote characters.\n", charcount);
    return 0;
}
./program 
Michi"""LoL'''Another'"LoL.
There are 8 non-quote characters.