C как искать и подсчитывать некоторые конкретные c слова в предложении - PullRequest
1 голос
/ 19 июня 2020
• 1000 at, in and on "в предложении с клавиатуры. В настоящее время я пишу такие коды. Однако я не могу вводить строки в "char word". Возможно, я не могу правильно использовать некоторые функции, но я не знаю, в чем проблема. Может кто-нибудь мне помочь ??
#include <stdio.h>
#include <string.h>
#include <ctype.h>


char word[50][30];
char prep_at[] = "at";
char prep_by[] = "by";
char prep_for[] = "for";
char prep_in[] = "in";
char prep_on[] = "on";
char prep_of[] = "of";
char prep_to[] = "to";
char prep_with[] = "with";
int count[6] = {0};

void GetLine(char str[]);
void GetWord(char str[]);
void ToLower(char str[]);
int main(void)
{
        char str[512];//最初のテキスト
        int i = 0;
        GetLine(str);
        GetWord(str);
        ToLower(str);
        printf("%s",word[1][1]);
        while (word != '\0'){
          if (strcmp(word[i],prep_at) == 0)
          count[0]++;
          i++;
        }      
      printf("%d",count[0]);
}

void GetLine(char str[])
{
        printf("文字列を入力:");
        scanf("%s",str);

}

void GetWord(char str[]){

  int i = 0;
  char *token;

  token = strtok(str," ");

  while(token != NULL){
    strcpy(word[i],token);
     //printf("%s\n",word[i]);  //単語を取り出せたか確認用
    token = strtok(NULL," ");
    i++;
  }
}

void ToLower(char str[]) {
    int i = 0;

    while (str[i] != '\0' ) { //文字列の入っているセンテンスがEOSじゃなければループ
         str[i] = tolower((unsigned char)str[i]);
        // printf("%s\n",word[i]);
        i++;
    }
}

1 Ответ

0 голосов
/ 19 июня 2020

добро пожаловать!

одним из самых простых способов было бы (для меня) создать массив слов из строки, которую вы получаете. например:

int push_tok(char **arr, const char *tok, unsigned int size);

void foo(char *str)
{
  char **arr;
  char *tok;

  tok = strtok(str, ' ');
  // this is NOT a C function, define it yourself
  push_tok(arr, tok, arr_size);
  while (tok != NULL) {
    tok = strtok(NULL, ' ');
  }
}

https://linux.die.net/man/3/strtok

...