Как создать структуру каждого слова в файле .txt в C? - PullRequest
0 голосов
/ 22 апреля 2020

если дан короткий .txt файл, который содержал следующее содержание, как бы вы go описали создание структуры для каждого слова в указанной строке c в файле и определяли, есть ли у него * перед ним

Пример файла:

a *b c 
*d e f

Я создал следующие структуры:

typedef struct Unit
{
    bool hasStar;
    char variable[1];
} unit;

Поэтому я хотел бы создать структуру для a, * b и c для пример. Я не уверен, как это сделать, поэтому любая помощь по поводу того, как лучше всего подойти к этому, была бы удивительной

1 Ответ

1 голос
/ 22 апреля 2020

Во-первых, вы должны изменить char variable[1] на char varibale[3], по крайней мере, для хранения, например, строки "* a".

Вы можете получить строку за строкой из файла, используя fgets, затем используя strtok для разделения строки пробелом.

FILE *fp = fopen("intput.txt", "r");
if(!fp)
  // handle error.
char line[256];
while(fgets(line, sizeof(line), fp) {
    // using strtok to split each line
}

Для разбиения строки используйте strtok и проверьте символ звезды * в начале слова:

char * token = strtok(line, " ");
while (token != NULL) {
    strcpy(units[i].variable, token);
    if (token[0] == '*')
       units[i].hasStar = true;
    else
        units[i].hasStar = false;
    strtok(NULL, " ");
    i++;
}

Перед while l oop из fgets вы должны объявить размер units и сначала инициализировать i, например, приведенный ниже код, я инициализирую размер массива units, который равен 100:

unit units[100];
int i = 0;
...