Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: В чём здесь прикол?  (Прочитано 20530 раз)
0 Пользователей и 1 Гость смотрят эту тему.
TiNik Nikolay
Участник

ua
Offline Offline

« : 10-01-2007 07:37 » 

#include<iostream.h>
void MyCtp(char *str);
int main()
{
   char string;
   MyCtp(&string);
   cout<<string;
   
   return 0;
}
void MyCtp(char *str)
{
   *str="C++";
}
Здесь была моя ладья...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-01-2007 08:10 » 

TiNik, тут приколов нет - есть сплошные некорректности. Я насчитал 2 штуки.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
TiNik Nikolay
Участник

ua
Offline Offline

« Ответ #2 : 10-01-2007 08:14 » 

Тогда как заставить её зароботать?С числами это легко, а как реализ со строками???
#include<iostream.h>
void MyNum(int *i);
int main()
{
   int num;
   MyNum(&num);
   cout<<num;
   
   return 0;
}
void MyNum(int *i)
{
   *i=123;
}
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 10-01-2007 08:24 » 

Строка в C/C++ - это массив символов. Сооотв., объявляем указатель на символ и передаем в ф-ию адрес указателя (но не его значение!).

Код:
void my_string(char ** pstr)
{
    *pstr = "aaaa"; // "aaa" - это указатель на статический массив символов.
}

int main()
{
    char * str;
    my_string(&str);
.....
}
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
TiNik Nikolay
Участник

ua
Offline Offline

« Ответ #4 : 10-01-2007 08:55 » 

Спасиба!!!
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 10-01-2007 11:31 » 

Всё-равно, даже так, лучше не делать.

Правильнее будет передавать в ф-ю буфер, и освобождать его потом.

Код:
int MyStr(char *psz)
{
char pszDat[] = "functions data";
int nRet = strlen(pszDat);
if(psz)
{
strncpy(psz, pszDat, nRet);
}
return nRet;
}

int _tmain(int argc, _TCHAR* argv[])
{
int nLen = MyStr(NULL);
if(nLen>0)
{
char *psz = new char[nLen+1];
memset(psz,0,nLen+1);
MyStr(psz);
printf("Data: %s", psz);
delete [] psz;
}
else
{
printf("No Data");
}
return 0;
}

Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
TiNik Nikolay
Участник

ua
Offline Offline

« Ответ #6 : 10-01-2007 11:35 » 

А как свой strcpy() написать или strncat()?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 10-01-2007 11:54 » 

очень просто - главное помнить, что речь идёт о простом массиве элементов.

те strcpy() -

Код:
 pszTarg[i] = pszSrc[i]; 

"strncat()?" что делает?
« Последнее редактирование: 10-01-2007 11:56 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 10-01-2007 12:24 » 

А как свой strcpy() написать или strncat()?
Проблем с этим помоему не должно возникать.
Вот смотри:
Код:
char *my_strcpy(char *to, const char *from)
{
char *temp = to;

while( *from ) *to++ = *from++;
*to = '\0';
return temp;
}

char *my_strncat(char *to, const char *from, unsigned int size)
{
unsigned int i = strlen(to);

for( ; *from && size; i++, size-- ) to[i] = *from++;
to[i] = '\0';
return to;
}
« Последнее редактирование: 15-12-2007 21:59 от Алексей1153++ » Записан
TiNik Nikolay
Участник

ua
Offline Offline

« Ответ #9 : 10-01-2007 12:33 » 

Я может ...(Достоевский) но вот это?!
char *my_strcpy(char *to, const char *from) - это функция как и void MyCtp(char *str) ?!
Я правильно понимаю!!!
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 10-01-2007 12:59 » 

Я может ...(Достоевский) но вот это?!
char *my_strcpy(char *to, const char *from) - это функция как и void MyCtp(char *str) ?!
Я правильно понимаю!!!
Что то Я не пойму, что Ты хочешь спросить.
Записан
TiNik Nikolay
Участник

ua
Offline Offline

« Ответ #11 : 10-01-2007 13:17 » 

Я имел ввиду что можна использовать char как void,int!!!Вот что я спрашивал!!!
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #12 : 10-01-2007 13:22 » 

TiNik, а ты вообще-то чем занимаешься?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #13 : 10-01-2007 13:28 » 

если мне не изменяет память, то все простые типы имеют числовое представление.
Записан

Удачного всем кодинга! -=x[PooH]x=-
TiNik Nikolay
Участник

ua
Offline Offline

« Ответ #14 : 10-01-2007 13:41 » 

Джон я учусь и танцую, а вчём дело!?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #15 : 10-01-2007 14:55 » 

Нууу дык как тебе объяснить. Вопросы вдруг странные задаёшь. Может лучше танцевать?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 10-01-2007 16:07 » 

"strncat()?" что делает?
Ф-ии серии XXXnYYY() имеют доп.параметер, ограничивающий макс.длину обрабатываемой строки. Напр., snprintf(buffer, size, fmt, ...) не даст переполнить буфер.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #17 : 10-01-2007 16:36 » 

Ага я уже понял из примера Serg79. Я именно её никогда не использовал, а в справочник в лом было лезть.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 11-01-2007 05:32 » new

Я имел ввиду что можна использовать char как void,int!!!Вот что я спрашивал!!!
Вот в этом топике ( https://forum.shelek.ru/index.php/topic,5525.0.html ) есть ссылка на хорошую книгу по 'C'. В ней ты найдешь, что представляют из себя типы данных (void, char, int ...), их размерность, и как они размещаються в памяти машины. Так же, там описанны указатели, массивы, и другие более сложные структуры данных.

Читай эту книгу, что будет не понятно спрашивай на форуме и тебе обязательно помогут. Но на глупые вопросы типа приведенного выще, Я думаю отвечать тебе не станут.  Да-да
« Последнее редактирование: 15-12-2007 22:00 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines