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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование строки в число 
V
    Опции темы
ShMary
Дата 11.10.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте уважаемые!
Помогите пожалуйста новичку. Необходимо из текстового файла со строкой чисел считать эти числа и произвести преобразование из типа char в  double... 
есть небольшой набросок, но он не работает  smile 
подскажите плиз, что не так.... 

зарание спасибо

#define FNAME "d:\\chisla.dat\0"// имя файла
#define N 5

int main() //10
{
char fname [20]= FNAME;
FILE *in;// текстовый файл открыт для чтения

char st[80];// строка из текста
double k[5];

char* skip (char*);//----------- вот эта строка вызывает сомнение----------------------

int n=0;          //40
  while(!feof(in)) 
  {
  fscanf(in,"%s", &st);
 
char* skip = (char *)st;
{
    
      while (*st==' ')  
          *st++;
      //return st;
      char *st = st;        //50

k[n]= atof(st);
printf("строка = %s значение = %5.3f\n",st,k[n]);
}
  } //55





PM MAIL   Вверх
JackYF
Дата 11.10.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(ShMary @  11.10.2007,  16:13 Найти цитируемый пост)
FILE *in;// текстовый файл открыт для чтения

нет, только объявлен, надо

Код

in = fopen(fname);


В конце программы вызвать, соответственно, fclose.


Цитата(ShMary @  11.10.2007,  16:13 Найти цитируемый пост)
char* skip (char*);//----------- вот эта строка вызывает сомнение----------------------

а зачем она вообще здесь нужна?


Цитата(ShMary @  11.10.2007,  16:13 Найти цитируемый пост)
char* skip = (char *)st;
{
    
      while (*st==' ')  
          *st++;
      //return st;
      char *st = st;        //50

k[n]= atof(st);
printf("строка = %s значение = %5.3f\n",st,k[n]);
}
  } //55

много буков, незачем:
Код

double doubleVar;
while (!feof(in))
{
  fscanf(in, "%s", st);
  sscanf(st, "%lf", &doubleVar);
  printf("Next double variable: %lf", doubleVar);
}





--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
ShMary
Дата 18.10.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!!!!
Спасибо БОЛЬШУЩЕЕ за ответ!!!!
все исправила, все работает!!!!  smile 

можно, если не трудно, объяснить использование %lf, обычно видела просто %f, %d......?
PM MAIL   Вверх
Greeen
Дата 18.10.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



%lf - спецификатор формата для double

Добавлено через 53 секунды
То что ты видела:
%f - float
%d - int


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
ShMary
Дата 30.11.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо, все поняла! вопрос закрыт.
PM MAIL   Вверх
bsa
Дата 30.11.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Greeen @ 18.10.2007,  16:21)
%lf - спецификатор формата для double

Добавлено @ 16:22
То что ты видела:
%f - float
%d - int

Цитата(man 3 scanf)
       l      Indicates  either that the conversion will be one of diouxX or n
              and the next pointer is a pointer to a long int or unsigned long
              int (rather than int), or that the conversion will be one of efg
              and the next pointer is a pointer to double (rather than float).
              Specifying two l characters is equivalent to L.  If used with %c
              or %s the corresponding parameter is considered as a pointer  to
              a wide character or wide-character string respectively.

Цитата(man 3scanf)
       f      Matches  an  optionally  signed  floating-point number; the next
              pointer must be a pointer to float.


Это сообщение отредактировал(а) bsa - 30.11.2007, 11:45
PM   Вверх
Greeen
Дата 30.11.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bsa, спасибо, буду знать  smile 


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
bsa
Дата 30.11.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Greeen @ 30.11.2007,  11:42)
bsa, спасибо, буду знать  smile

Лучше бы проверил. Тема про scanf, а цитату из документации по printf я привел - видимо еще не проснулся.  smile 
другими словами ты был прав.
PM   Вверх
Greeen
Дата 30.11.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile фига себе... в принципе я думал что и в printf'е так же, так что  smile 


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
archimed7592
Дата 30.11.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



bsa
Greeen
Вы чего? 0_о
float вообще невозможно передать через эллипсис.

Добавлено через 49 секунд
Я имею ввиду, что в том виде, в котором он хранится в переменной типа float невозможно smile.

Добавлено через 12 минут и 39 секунд
Ага, я тоже туплю - речь то про scanf smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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