Как мне манипулировать строками, чтобы хранить их части как переменные? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть текстовый файл, который содержит кучу информации, с которой моя программа должна прочитать, например:

  • Порт: 1337

  • IP: "IP"

  • Каталог: ""

Мне нужно иметь возможность хранить все после ":" из каждой строки исохранить часть строки как переменную, например.int port = 1337, что-то в этом роде *

Какие функции я должен использовать и как мне отформатировать его, чтобы он работал с как можно меньшим количеством кода.

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Для этого вы можете использовать функции strtok и strtol (если вы читаете из строк):

int port = 0;
char *tmp_str;
strtok(port_str, ": ");
tmp_str = strtok(NULL, ": ");
port = strtol(tmp_str, NULL, 10);

прочее.

В противном случае используйте fscanf форматированный ввод:

fscanf(file_pointer, "%*s%d", &port);
fscanf(file_pointer, "%*s%s", ip_str);
fscanf(file_pointer, "%*s%s", dir_str);

* в спецификаторах формата говорят fscanf игнорировать прочитанную строку ("Порт", "IP", "Каталог" и т. Д.), А затем : (двоеточие + пробел) сообщает fscanf игнорировать двоеточие и любые пробелы после него. Затем fscanf считывает целое число или строку (%d или %s соответственно) в параметр, переданный в fscanf.

1 голос
/ 27 мая 2019

Взгляните на fscanf () . Пока ввод всегда правильно отформатирован, он будет заполнять переменные для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...