идентификация символа 'в C - PullRequest
0 голосов
/ 23 января 2020

Я, вероятно, ужасно реализую этот код, но сейчас я делаю CS50 и пытаюсь найти в моей строке символ '. Я искал другие символы, такие как text [i] == '!', однако при выполнении text [i] == ''' он работает неправильно. Можно ли заставить его работать таким образом?

Вот мой ужасный код, если вам интересно ... я пытаюсь найти количество букв, слов и предложений ... это работает не так, как символы я не могу определить.

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

int main (void)
{
string text = get_string("Input text: "); //accept text input
int i;
int length = strlen(text);
int count = 0;
int count2 = 0;
int count3 = 0;
int excludeothers = (length - count);

for (i = 0; i < length; i++)
{
    if(text[i] == ' ' || text [i] == '!' || text[i] == '?' || text[i] == '.' || text[i] == ',' || text[i] == '"' || text[i] == ':' || text[i] == ';' || text[i] == '-' || text[i] == ''') //check number of letters
    {
        count++;
    }
}

for (i = 0; i <= length; i++)
{
    if((text[i] == ' ' || text[i] == '\0') && (text[i-1] != ' ' || text[i-1] != '\0')) //check number of words
    {
        count2++;
    }
}

for (i = 0; i < length; i++)
{
    if((text[i] == '.' || text[i] == '?' || text [i] == '!') && (text[i+1] == ' ' || text[i+1] == '\0')) //check number of sentences
    {
        count3++;
    }
}


    printf("%i letters\n", excludeothers); //print letters
    printf("%i words\n", count2); //print words
    printf("%i sentences\n", count3); //print sentences

}

Ответы [ 2 ]

4 голосов
/ 23 января 2020

Вам нужно избежать этого:

'\''

Это означает символ одинарной кавычки. Точно так же вы можете использовать двойные кавычки в строке: "\""

Далее: https://en.wikipedia.org/wiki/Escape_sequences_in_C

0 голосов
/ 23 января 2020

Если вы хотите сделать это по-своему, тогда да, вам нужно убежать от этого персонажа. Взгляните на GeeksForGeeks статью об экранировании символов в целом. Это поможет вам узнать, какие из них можно передать как обычные символы, а какие будут нуждаться в обратном символе sh перед ними.

Однако, если вы рассматриваете другие варианты, взгляните на strchr() , Это встроенная функция, которую вы можете использовать. Использование этого значительно улучшит и упростит ваш код. Вы можете взглянуть на это обсуждение вопроса для получения дополнительной информации. А вот ссылка на C документацию на эту функцию.

...