Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 15:23   #1
dlregistration
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию Функция на Си

Помогите разобраться с функцией. Требуется написать функцию, которая удаляет часть строки от начала до определенного символа. Что-то типа

Код:
char delstr(char str[]){
int i, j= 0;
char newstr[35];
char p;
for (i = 0; i < 35; i++)
newstr[i] = 0;
for (p = &str['.']; p == &str['\n']; p++){
newstr[i] = *p;
i++;
}
printf("\n%s", newstr);
}
Сильно не критикуйте, так как Си начал изучать недавно.

Последний раз редактировалось Stilet; 29.05.2011 в 15:32.
dlregistration вне форума Ответить с цитированием
Старый 29.05.2011, 15:31   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
void cut(char *str, int new_begin)
{
   while(*(str + new_begin))
      *str = *(str++ + new_begin);
   *str = '\0';
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 29.05.2011, 15:43   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю свой вариант
Код:
char* dele(char* s,char c){for(;s[0]!=c;s++); return ++s;}
int _tmain(int argc, _TCHAR* argv[])
{
	char* s="Hello World\0";	
        printf("%s\n And delete to Space=%s",s,dele(s,' '));
	getchar();

	return 0;
}
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.05.2011, 15:49   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Stilet
Только будет айайай, если написать так:
Код:
printf("%s\n And delete to Space=%s",s,dele(s,'Q'));
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 29.05.2011, 15:56   #5
dlregistration
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию

Идея понятна. Благодарю
2Syuf: почему будет "айайай"?
dlregistration вне форума Ответить с цитированием
Старый 29.05.2011, 16:02   #6
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
2Syuf
Не набирайтесь тут плохих выражений.
Цитата:
почему будет "айайай"
Потому что он зациклится, гуляя по чужой памяти.
P.S. Существует такая функция strchr
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 29.05.2011, 16:14   #7
dlregistration
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию

Спасибо за помощь
dlregistration вне форума Ответить с цитированием
Старый 29.05.2011, 17:12   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Syuf

А вот пусть автор пораскинет мозгами как сделать так чтоб функция не выползала за пределы строки.

P.S. Кстати это не единственный ее недостаток.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция Артл Помощь студентам 3 28.03.2011 03:03
Функция Kloun1 Паскаль, Turbo Pascal, PascalABC.NET 5 24.01.2009 19:56
функция sergei64_89 Общие вопросы C/C++ 2 25.05.2008 16:48
Функция... Sota Помощь студентам 5 24.05.2008 22:19
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50