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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2014, 11:25   #11
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Stilet
Цитата:
for(;s[j];j++) s[j]=0;
это зачем? одного нуля в конце строки не достаточно?

Чуть поправил, вышло чето такое:
Код:
#include "stdio.h"

void removeFirstWord(char *string) {
  int word_len = 0, i;
  
  while (string[word_len] && string[word_len] == ' ')
    ++word_len;

  if (0 == string[word_len])
    return;
  
  while (string[word_len] && ' ' != string[word_len])
    ++word_len;
  
  for (i = word_len; string[i]; ++i) 
    string[i - word_len] = string[i];
  
  string[i - word_len] = 0;
}

void run(char *string) {
  printf("|%s|->", string);
  removeFirstWord(string);
  printf("|%s|\n", string);
}

int main() {
  char str1[] = "mama mila ramu";
  char str2[] = "chisto";
  char str3[] = "  ";
  char str4[] = "";
  
  run(str1);
  run(str1);
  run(str2);
  run(str3);
  run(str4);
}

Последний раз редактировалось rrrFer; 14.09.2014 в 11:28.
rrrFer вне форума Ответить с цитированием
Старый 14.09.2014, 12:23   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
одного нуля в конце строки не достаточно?
Ну я так... типа мусор фтопку решил скинуть...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2014, 14:50   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
Подмигивание

Код:
char* DelFirstWord(char* S)
{
  // ищу начало 1-го слова (а то вдруг строка с пробелов начинается
  // или с других непечатных символов)
  while (*S)
  {
    if (*S > 0x20) break;
    S++;
  }
  
  // ищу конец 1-го слова
  while (*S)
  {
    if (*S == 0x20) break;
    S++;
  }
  
  // ищу начало 2-го слова (а то вдруг слова разделены
  // не одним пробелом, а несколькими)
  while (*S)
  {
    if (*S > 0x20) break;
    S++;
  }
  
  return S;
}
Ахтунг! Код не отлаживал, писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.09.2014, 18:40   #14
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

min@y™
Угу, так тоже можно.
В задании тока ниче не сказано что надо удалять пробелы после первого слова.
И...

char *str = new char[25];
strcpy(str, " ");
del(str); // твоя функция

В результате я получу указатель str равный нулю. А как память то мне освобождать теперь?

Если не секрет, с какой целью ты хардкодишь это: 0x20 ? - оно лучше читается в коде чем ' '?
rrrFer вне форума Ответить с цитированием
Старый 14.09.2014, 18:55   #15
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
В результате я получу указатель str равный нулю. А как память то мне освобождать теперь?
Код:
delete(str);
Прежде чем спорить - проверь под отладчиком. Моя функция оперирует копией значения указателя, а не его оригиналом. И она, таки, возвращает НОВОЕ значение указателя return S;, т.е. вызов функции надо присваивать переменной!

Цитата:
Если не секрет, с какой целью ты хардкодишь это: 0x20 ? - оно лучше читается в коде чем ' '?
Да, так лучше читается.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.09.2014, 19:04   #16
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Прежде чем спорить - проверь под отладчиком. Моя функция оперирует копией значения указателя, а не его оригиналом. И она, таки, возвращает НОВОЕ значение указателя return S;, т.е. вызов функции надо присваивать переменной!
Согласен, не вчитывался.

Цитата:
Да, так лучше читается.
Я чето не уверен - это не тема для обсуждения, просто реплика и мнение.
rrrFer вне форума Ответить с цитированием
Старый 14.09.2014, 19:10   #17
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Я чето не уверен
Нажми на ссылку.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Борьба со строками: Дана строка, состоящая из слов, разделенных пробелами и заканчивающаяся точкой. Удалить в каждом слове... (C) dykee Помощь студентам 1 18.03.2014 05:07
Дана строка. В строке удалить символ двоеточие и подсчитать количество удаленных символов.в делфи _Алексей_ Помощь студентам 3 29.04.2012 15:37
Дана строка со словами, разделёнными пробелами, в конце - точка. Удалить слово с заданным номером (Паскаль ABC) Margosham-k Помощь студентам 6 10.04.2012 12:11
Дана строка символов. Удалить из исходной строки все цифры. Striker14 Помощь студентам 4 26.02.2009 15:50
Дана строка символов. Задача: удалить из строки все цифры. Striker14 Помощь студентам 1 25.02.2009 20:23