Вопрос по C++
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
А зачем графические приложения? Ты ведь не собираешься работать с графикой?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Так и не графические, причём тут графика, я оконное приложение делаю.
А с графикой работать может и буду, на Delphi делаю ремейк игры под дос KB2(шото типа героев), и сделал бы уже, да лень.
А с графикой работать может и буду, на Delphi делаю ремейк игры под дос KB2(шото типа героев), и сделал бы уже, да лень.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Вот как склеить две строки char* ? Притом нужно это проделать в Visual Studio 2008 и чтобы программа не вылетала и не выдавала предупреждений.
Встроеные функции не работают. Своя функция, где каждый символ переписывавется из строк в строку не работает.
Можно использовать char[х], но хочется знать как с char* работать.
Добавлено спустя 6 минут 4 секунды:
И как же всетаки сконвертировать число в хоть какойнибудь char
Встроеные функции не работают. Своя функция, где каждый символ переписывавется из строк в строку не работает.
Можно использовать char[х], но хочется знать как с char* работать.
Добавлено спустя 6 минут 4 секунды:
И как же всетаки сконвертировать число в хоть какойнибудь char
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
char * - указатель. Надеюсь ты выделил память под строку...
Код: Выделить всё
char str1[] = "Hello, ";
char str2[] = "world!";
char result[14];
strcat(result, str1);
strcat(result, str2);
printf("%s", result);
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
NiGHt-LEshiY
Спасибо, но не работает.
Вообще что то не понятное получается.
Почему то если только прибавить к result str2, то выводится следующая запись <каракули+str1+str2> а выводится вот что
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦str2str1
Я искал в интернете, сам и так и эток пробовал. Несколько часов потратил и никак не получается
Спасибо, но не работает.
Вообще что то не понятное получается.
Почему то если только прибавить к result str2, то выводится следующая запись <каракули+str1+str2>
Код: Выделить всё
int _tmain(int argc, _TCHAR* argv[])
{
char s1[]="str1";
char s2[]="str2";
char r[14];
strcat(r,s1);
printf("%s",r);
getchar();
return 0;
}
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦str2str1
Я искал в интернете, сам и так и эток пробовал. Несколько часов потратил и никак не получается
Код: Выделить всё
char result[14];
result[0] = 0;
Программерская задачка:
Буратине дали 5 яблок. 3 яблока он съел.
Вопрос: Сколько яблок осталось у Буратино?
Думаете 2?
А вот фик вам: Неизвестно, сколько яблок было у Буратино ДО того, как ему дали 5 яблок.
Мораль: обнуляйте переменные!
- $t@t!c_V()1D
- Разработчик
- Сообщения: 2639
- Зарегистрирован: 06.12.2007
- Благодарил (а): 10 раз
- Поблагодарили: 29 раз
GanGSISoft
Тогда
И да, Lev2008, это не обнуление а, отрезание нулём. Вот memset - обнуление, если 2-ой параметр - 0.
Тогда
Код: Выделить всё
int _tmain(int argc, _TCHAR* argv[])
{
char s1[]="str1";
char s2[]="str2";
char r[14];
memset(&r[0], 0, 14*sizeof(char)); //Я знаю, что sizeof(char) = 1, но так по ГОСТу лучше.
strcat(&r[0], &s1[0]);
printf("%s",r);
getchar();
return 0;
}
Another guy on them internets
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Смысла нет в мемсете в данном случае. :)
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
Еще как есть. Будешь программировать серьезные вещи - поймешь, насколько это важно.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
-
- Эксперты no-Steam
- Сообщения: 2600
- Зарегистрирован: 15.02.2007
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 44 раза
- Контактная информация:
Еще как нужно, я раньше в своих проектах тоже память не очищал, а потому часто мучился с порчей кучи.Lev2008 писал(а):Смысла нет в мемсете в данном случае. :)
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
$t@t!c_V()1D
Спасибо. Теперь работает. Этот С++ с одной стороны тоже что и Pascal, а с другой совсем другое.
Спасибо. Теперь работает. Этот С++ с одной стороны тоже что и Pascal, а с другой совсем другое.
Ага, только если убрать memset то получается тот же бред, что и раньше. Так что без него ничего толкового щас и не выйдет.Lev2008 писал(а):Смысла нет в мемсете в данном случае. :)
Последний раз редактировалось GanGSISoft 11.09.2010, 19:37, всего редактировалось 1 раз.
-
- Эксперты no-Steam
- Сообщения: 2600
- Зарегистрирован: 15.02.2007
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 44 раза
- Контактная информация:
Ксчтати. вместо memset'а так же можно использовать и ZeroMemory. но это не православно.
mms://217.170.65.66/zenit
mms://217.170.65.66/zenit
Последний раз редактировалось $t@t!c_V()1D 11.09.2010, 20:19, всего редактировалось 1 раз.
Причина: Таки да, ZeroMemory как-то слишком виндово, не?
Причина: Таки да, ZeroMemory как-то слишком виндово, не?
- $t@t!c_V()1D
- Разработчик
- Сообщения: 2639
- Зарегистрирован: 06.12.2007
- Благодарил (а): 10 раз
- Поблагодарили: 29 раз
GanGSISoft
Си ниже, чем Delphi, он ближе к Асму. Насчёт С++ ничего однозначного сказать не могу, зависит от стиля программирования.
Си ниже, чем Delphi, он ближе к Асму. Насчёт С++ ничего однозначного сказать не могу, зависит от стиля программирования.
Another guy on them internets
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Не знаю как вы собираете, но:GanGSISoft писал(а):Ага, только если убрать memset то получается тот же бред, что и раньше. Так что без него ничего толкового щас и не выйдет.
Код: Выделить всё
char s1[]="str1";
char s2[]="str2";
char r[14];
strcat(r,s1);
printf("%s",r);
getchar();
return 0;
Код: Выделить всё
char s1[]="str1";
char s2[]="str2";
char r[14];
r[0] = 0;
strcat(r,s1);
printf("%s",r);
getchar();
return 0;
Кучу можно испортить, если у вас нет проверок на размеры используемых буферов и т.п. Используйте безопасные варианты функций:
Код: Выделить всё
strcat_s(r,14,s1);
Последний раз редактировалось Lev2008 12.09.2010, 00:48, всего редактировалось 1 раз.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
И всем спасибо большое. Теперь у меня каким то чудо образом стало все получатся со строками.
А в C++ нету аналогов функции pascal pos?(я её уже сам написал, но думаю стандартная(если есть) будет быстрее и лучше работать).
А в C++ нету аналогов функции pascal pos?(я её уже сам написал, но думаю стандартная(если есть) будет быстрее и лучше работать).