Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает функция 
:(
    Опции темы
Тигер
Дата 29.5.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



Выдаёт исключение, хз почему
Код

char * ftoa(double f,const char len[]="3"){
    char *buf=new char[(atoi(len)+(int)f+1)];
    char mask[]="%.";
    strcat(mask,len);
    strcat(mask,"f");
    sprintf(buf,mask,f);
    return buf;
}

PM MAIL   Вверх
ИванМ
Дата 29.5.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Тигер, mask имеет длину 2 символа + \0. А вы пытаетесь туда еще что-то добавить.
PM MAIL   Вверх
Тигер
Дата 29.5.2010, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



а так работает
Код

char * ftoa(double f,const int len=3){
    char *buf=new char[(len+(int)f+1)];
    char clen[33];
    char mask[]="%.";
    itoa(len,clen,10);
    strcat(mask,clen);
    strcat(mask,"f");
    sprintf(buf,mask,f);
    return buf;
}

PM MAIL   Вверх
Тигер
Дата 29.5.2010, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



а почему?
PM MAIL   Вверх
Тигер
Дата 29.5.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



а ещё вот эта, заменяет в строке
Код

char * char_replace(const char *find,const char *on,char *str){
    char *pos=strchr(str,(int)(*find));
    while(pos!=NULL){
        str[(pos-str)]=*on;
        pos=strchr(pos+1,(int)(*find));
    }
    return str;
}

char_replace(".",",","1.1000");
на 
1,1
а надо на 1,1000
PM MAIL   Вверх
Тигер
Дата 30.5.2010, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



даже если так, всё равно нули пропадают
Код

str[1]=',';

PM MAIL   Вверх
djamshud
Дата 30.5.2010, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Если вам нужно просто заменить все символы А на В в строке, то как-то так:

Код

#include<string.h>
#include<stdio.h>
#include<stdlib.h>

char *char_replace(char const *str,char before,char after){
size_t len=strlen(str)+1;
char *ret=malloc(len),*ptr=ret;
memcpy(ret,str,len);
while((ptr=strchr(ptr,before))!=0)
*ptr++=after;
return ret;}


int main(){
char const *str="Hello world!";
char *new=char_replace(str,'l','L');
printf("%s\n",new);
free(new);                        
return 0;} 


Добавлено через 17 секунд
Не проверял, но должно работать.

Добавлено через 34 секунды
Оно написано на си (c89)!

Добавлено через 1 минуту и 27 секунд
Извините, но ваши сумбурные комментарии по собственному коду, что и как в нем не работает, я не понял. Поэтому написал сам.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Тигер
Дата 30.5.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



ваша заработала

Код

char *char_replace(char const *str,char before,char after){
size_t len=strlen(str)+1;
char *ret=(char *)malloc(len),*ptr=ret;
memcpy(ret,str,len);
while((ptr=strchr(ptr,before))!=0)
*ptr++=after;
return ret;}


меня интересует почему моя не работает? тоесть
Код

char_replace(".",",","1.1000"); // = 1,1 ; А должно быть 1,1000

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0959 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.