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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2013, 11:41   #1
arivail
Новичок
Джуниор
 
Регистрация: 30.06.2013
Сообщений: 2
По умолчанию Считывание чисел из файла с "запятой"

Собственно появилась проблема, не знаю как ее решить. Есть код

Код:
FILE* Data = fopen("data.txt","r");
	while(!feof(Data))
    {
        fscanf(Data,"%d\n",&point);
        n++;
    }
    point = 0;

	n = n/2;
	printf("Count point:%d\n",n);
	fclose(Data);

float xValues[n];
float yValues[n];

Data = fopen("data.txt","r");

for(int i=0;i<n;i++)
{
    fscanf(Data,"%f %f",&xValues[i],&yValues[i]);
}

fclose(Data);
в первом случае считаю сколько и вывожу, во втором считываю в xValues,yValues
Data - txt в котором лежат мои числа, которые мне нужны
Проблема в том, что не могу ввести значения, формата 0,0001. Просто сразу не видит. Подскажите, пожалуйста
arivail вне форума Ответить с цитированием
Старый 30.06.2013, 12:18   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

У вас файл текстовый... у вас один символ в таком файле занимает 1 байт, а вы в переменную point пытаетесь считать sizeof(int) байт.
Igor95 вне форума Ответить с цитированием
Старый 30.06.2013, 14:44   #3
arivail
Новичок
Джуниор
 
Регистрация: 30.06.2013
Сообщений: 2
По умолчанию

Извиняюсь, не очень хорошо понимаю язык. Можно чуть подробнее, что я должен сделать
Как понял, должен просто int point заменить к примеру на float.
upd
благодарю за подсказку, сам сказал, сам попробовал, получилось)
arivail вне форума Ответить с цитированием
Старый 30.06.2013, 22:25   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Дело в том, что Вы пытаетесь записать некоторое значение размером 1 байт в переменную размера float или int.
Я бы рекомендовал считать данные в массив типа char*. Затем просто воспользоваться функцией atof() - для перевода нуль-терминированной строки в значение типа float. (atof = ASCII to Float).
Igor95 вне форума Ответить с цитированием
Старый 01.07.2013, 01:55   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
Дело в том, что Вы пытаетесь записать некоторое значение размером 1 байт в переменную размера float или int.
Я бы рекомендовал считать данные в массив типа char*. Затем просто воспользоваться функцией atof() - для перевода нуль-терминированной строки в значение типа float. (atof = ASCII to Float).
вы про printf/scanf почитайте чтоли.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Существуют ли "защищённые" флешки (посредством "заводского" внедрения туда файла autorun.inf) Вадим Мошев Безопасность, Шифрование 20 23.08.2012 22:19
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Считывание строк из файла. перемещение по строкам "веред"-"назад" Larkin. Помощь студентам 2 15.06.2009 17:58