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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2013, 02:35   #1
YulichkaR
Новичок
Джуниор
 
Регистрация: 26.04.2013
Сообщений: 2
Сообщение Функции и строки в си

Задача поставлена вот какая: Написать функцию, которая в данной строке, состоящей из слов, разделенных пробе-лами, между словами оставит только по одному пробелу и после каждого слова вставит запятую.

Я её вроде как сделала, но суть в том, что вылетает из памяти, вот мой код:
Код:
# include <stdio.h>
 # include <conio.h>
 # include <stdlib.h>
 # include <string.h>
 # include <locale.h>
 char f1(char *d)

 { char *k;char *l= ", ";
 char *razd=" ",*p,*j;
 p=strtok(d,razd);
 k=strcat(p,l);
 while (p) { 
 p=strtok(p,razd);
 j=strcpy(p,k);
 k=strcat(k,p); <------тут вылетает
 k=strcat(k,l);}
 printf("% ch",k);
 return 0;
 }
 int main(void)
 { char *p;
 setlocale (0,"rus");
 setlocale(LC_ALL,"Russian");
 char *d=(char*)malloc(200*sizeof(char));
 if (!d) {printf("Память не выделена"); return 1;}
 d=(char*)realloc(d,(strlen(d)+1)*sizeof(char));
 if (!d) {printf("Память не выделена"); return 1;}
 printf("Введите строку: ");
 gets(d);
 f1(d);
 _getch();
 return 0;
 }
Может кто знает в чем ошибка? Большое спасибо))

Последний раз редактировалось Stilet; 26.04.2013 в 07:45.
YulichkaR вне форума Ответить с цитированием
Старый 26.04.2013, 07:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предположу что функция должна выглядеть так:
Код:
 char* trims(char* s){
  int si=0;for(;s[si];si++);
  char* a=(char*)malloc(si);
  for(int i=0,j=0;i<si-1;i++){
   if(s[i]!=' ' && s[i+1]==' ') {a[j++]=s[i];a[j]=',';} else
   if(s[i]!=' ' && s[i+1]!=' ') a[j++]=s[i];
  }
  a[si]=0;
  return a;
 }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки, функции Kolaps Общие вопросы C/C++ 8 07.05.2012 11:01
Указатели, строки, функции Vera_0709 Общие вопросы C/C++ 3 05.01.2012 01:04
Строки и функции Batut Помощь студентам 1 10.10.2011 11:31
Функции,строки на Си Defender42 Помощь студентам 13 20.03.2011 16:57
функции строки CodeNOT Общие вопросы C/C++ 1 20.12.2010 00:13