Roland M Smith Ответов: 1

Как я могу заменить токены в строке


Я пишу программу на Windows на обычном языке C с помощью Visual Studio 2017.

Я читаю файл по одной строке за раз в переменную char[1024], а затем записываю ее обратно в другой файл.

Строка может содержать ни одного, ни одного или нескольких вхождений: @{varname}

Мне нужно заменить @{varname} в выходном файле значением из базы данных, которое я ищу, используя значение между скобками.

Значение из базы данных может быть больше 1024, поэтому мне нужно записать часть строки до @ в выходной файл, затем записать значение из базы данных, а затем записать часть строки после }.

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

Что я уже пробовал:

Я пробовал несколько вещей, включая strtok и различные функции времени выполнения str****.

1 Ответов

Рейтинг:
4

OriginalGriff

Начните с настройки выходной строки для копирования.
Затем обработайте входную строку:

1) Create a variable called foundAt, set it to false.
2) Loop through input
2.1) If  foundAt is true, check if this is a '{'.
2.1.1) If it is, loop though the input to find the matching '}'. This give you the name, so you can search the db, and copy the replacement string to the output. Set foundAt to false and use <code>continue</code> to skip the rest of your loop body.
2.1.2) If it isn't, copy an '@' to the output and clear foundAt
2.2 Is the input character an '@'?
2.2.1) If it is, set foundAt to true;
2.2.2) Otherwise, copy the character from the input to the output
3) Move on to the next input character and loop round again until all inputs are processed.


В этом есть смысл?


CPallini

5.