Функция для создания идентичной строке идентификатора из одной или двух строк в C - PullRequest
0 голосов
/ 03 января 2012

Я хотел бы знать, есть ли в C функция для создания идентичной строки ("account") из строки ("name") или двух строк ("name", "фамилия"), переданныхАргумент.

Дело в том, что я хочу создать учетную запись с псевдо-фамилией.Любые идеи, чтобы помочь мне?

Если нет функции, чтобы сделать это, я хотел бы знать лучший способ сделать это.Спасибо.

Ответы [ 4 ]

3 голосов
/ 03 января 2012

Вам придется написать свою собственную функцию.Перебирайте все символы в строке и создавайте из нее имя переменной.Если символ является буквенно-цифровым или подчеркиванием, вы можете сохранить его, в противном случае вам придется выбрать заменяющий символ.Переменные в C должны начинаться либо с подчеркивания, либо с буквы, цифры в начале строки должны обрабатываться.

Хитрость в том, что схема может создавать дубликаты имен переменных для одинаковых строк (преобразованиеочень вероятно, будет сюръективным, а не биективным).Таким образом, обычно существует некоторая таблица сопоставления для отслеживания и выбора дополнительных символов для различения этих дубликатов.

3 голосов
/ 03 января 2012

Имя переменной определяется во время компиляции. Вы не можете динамически генерировать имя переменной и ссылаться на нее. Если вы хотите добиться чего-то подобного, вы можете реализовать Map, где ключ - это строка с именем вашей переменной.

код может быть примерно таким:

//take a name and create a new entry in the map holding value of the given size
void create_variable_entry(char * name, void * value, int size);

//return a pointer to a previous inserted variable with name name. return NULL if variable doesn't exist
void * get_variable(char * name);
1 голос
/ 03 января 2012

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

Если вы хотите иметь возможность искать элементов с использованием заданного пользователем «имени», то, возможно, какое-то map / структура словаря будет полезна.

1 голос
/ 03 января 2012

Спецификация языка C не предоставляет никаких функций для создания / генерации имен переменных на основе входной строки.

Но вы можете написать один!

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