| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > AnsiString, Char |
| Автор: zzaa 11.4.2009, 19:21 |
| Что делает этая процедура? void convert (AnsiString text, char out[30]) { for (int j=0;j<50;j++) out[j]=0; for (int j=1;j<=text.Length();j++) out[j-1]=text[j]; } |
| Автор: azesmcar 11.4.2009, 19:27 |
| zzaa судя по названию конвертирует |
| Автор: SVN74 11.4.2009, 19:30 | ||
Тут явно ошибка: out[30] - аннулирует 255 байт |
| Автор: azesmcar 11.4.2009, 19:37 |
| SVN74 Ну это зависит от того какой параметр передать в принципе.. А код конвертирует AnsiString в char массив. В AnsiString индекс с 1 начинается в отличии от std::string, потому out[j-1]=text[j]; сработает нормально..хотя бред написан полнейший в таких случая передается как параметр размер буфера чтобы возложить ответственность на вызывающего функцию. А вообще AnsiString t; t.c_str() - если не ошибаюсь дает char* |
| Автор: azesmcar 11.4.2009, 19:40 |
| zzaa а какая разница? если передашь массив размером 30 все равно вылетать будет программа. А зачем обнулять то? |
| Автор: SVN74 11.4.2009, 19:58 |
| Можно и так: ===================== void convert (AnsiString text, char out[]) { strcpy(out, text.c_str()); // он же и аннулирует все.... } |
| Автор: zzaa 11.4.2009, 20:10 | ||
Так что же делает этая процедура? |
| Автор: azesmcar 11.4.2009, 20:11 | ||
zzaa
|