Как я могу написать список слов в символе? - PullRequest
0 голосов
/ 24 декабря 2018

Я работаю со словарем, и мне нужно написать список слов, которые затем будут заменены другими словами.Я только начал программировать не так давно, так что извините за мою неумение!

//working 
char word[] = { "hello" };
char replace[] = { "salut" };

//not working 
char word[] = { "hello", "what" };
char replace[] = { "salut", "quoi" };

Когда я пытаюсь скомпилировать вторую часть, где я написал "не работает", IDE даетмне следующие ошибки: «слишком много значений инициализатора», «слишком много инициализаторов».Хотя «рабочая» часть работает, как и ожидалось.

Я буду ждать некоторых решений / совета для моего кода ... Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Итак, я предполагаю, что вы хотите иметь два списка, которые содержат слова из двух разных языков.Затем, когда вам дадут ввод текста на английском языке, вы захотите переключить этот текст на второй язык, заменив слова с помощью списков.Если я прав: используйте указатели, как сказал @cslrnr.

char* english[] = {word1, word2, ...};
char* otherLanguage[] = {word1, word2, ...};
0 голосов
/ 24 декабря 2018

Вы должны использовать массив указателей для инициализации не работающей части.Это должно быть похоже на char *words[] = {"word1", "word2"} ; Это исправляет нерабочую часть, но не могли бы вы немного рассказать о вашем вопросе

Edit1: Это пример кода:

#include <stdio.h>
int main(char argc,char *argv[])
{
  char *words[2] = {"test","word"};
  printf("words[1] = %s , words[2] = %s \n", words[0], words[1]);
  return 0;
}

Этот код возвращает вывод:

words [1] = test, words [2] = word

Можете ли вы опубликовать свое сообщение об ошибке / какой компилятор вы используете, какую платформу?

Edit2:

Поскольку у вас есть слова в виде массива указателей, вы должны правильно проверить их в strstr, если вы собираетесь их использовать.

Вот пример:

#include <stdio.h>
int main(int argc, char *argv[]) 
{ 
    char str1[] = "practice makes perfect"; 
    char *str2[2] = {"practice", "perfect"}; 
    char* ptr1; 
    char *ptr2;

    ptr1 = strstr(str1, str2[0]);
    ptr2 = strstr(str1, str2[1]); 


    if (ptr1 != NULL ) { 
        printf("String %s found in %s\n",str2[0], str1); 
    } else
        printf("String not found\n");

    if (ptr2 != NULL) {
        printf("String %s found in %s\n", str2[1], str1); 
    } else
        printf("String not found\n");
    return 0; 
} 

Output:
String practice found in practice makes perfect
String perfect found in practice makes perfect
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...