Имею такой скрипт, цель - получить название двух тегов:
@NOTP::FQGT_HART_6n.PV
@NOTP::FQGT_HART_6n.SV
Сам скрипт
В случае работы strcat с одной переменной (TagNamePV) все ок, результат получается такой как нужно
PV=@NOTP::FQGT_HART_6n.PV
Но когда расскомменчиваю часть работы с SV, получается такая дребедень
PV=@NOTP::FQGT_HART_6n.PV SV=n.PV6n.SV
Т.е должно быть
SV=@NOTP::FQGT_HART_6n.SV
А получается SV=n.PV6n.SV
Как с этим бороться?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Strcat на Си
-
- знаток Eplan
- Сообщения: 1136
- Зарегистрирован: 21 сен 2012, 22:45
- Имя: aranea
- Благодарил (а): 30 раз
- Поблагодарили: 165 раз
Strcat на Си
скорее всего это ограничивает длину буфера указанной строкой, а вы еще в конец дописываете
читайте про память и маллоки всякие
лучше уж так (что-то удалил так как в этом куске кода не использовалось)
Код: Выделить всё
char TagNamePV[256], TagNameSV[256];
char *Tagprefix = "@NOTP::FQGT_HART";
char *RiserNumberValue;
RiserNumberValue = GetTagChar("RiserNumber"); //=6n
sprintf(TagNamePV, "%s_%s.%s", Tagprefix, RiserNumberValue, "PV");
printf("PV = %s\n",TagNamePV);
sprintf(TagNameSV, "%s_%s.%s", Tagprefix, RiserNumberValue, "SV");
printf("SV = %s\n",TagNamePV);
-
- осмотрелся
- Сообщения: 194
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 34 раза
Strcat на Си
Спасибо, это решило проблему. Какая замечательная функция sprintf)aranea писал(а): ↑02 мар 2020, 09:53скорее всего это ограничивает длину буфера указанной строкой, а вы еще в конец дописываете
читайте про память и маллоки всякие
лучше уж так (что-то удалил так как в этом куске кода не использовалось)Код: Выделить всё
char TagNamePV[256], TagNameSV[256]; char *Tagprefix = "@NOTP::FQGT_HART"; char *RiserNumberValue; RiserNumberValue = GetTagChar("RiserNumber"); //=6n sprintf(TagNamePV, "%s_%s.%s", Tagprefix, RiserNumberValue, "PV"); printf("PV = %s\n",TagNamePV); sprintf(TagNameSV, "%s_%s.%s", Tagprefix, RiserNumberValue, "SV"); printf("SV = %s\n",TagNamePV);
WinCC 7.4 SP1 Upd15, Step5.6