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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Требуется помощь файловый ввод вывод в c, ввожу целые числа а в файл зап-тся мусор 
V
    Опции темы
kresh
Дата 27.1.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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




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

Код

#include "stdafx.h"
#include <cstdio>
#include <iostream>
using namespace std;

FILE *fp;
int x;
float mass[10];
int main()
{ 
  
  if((fp=fopen("F1.txt","w"))==NULL){
      printf("error opening file\n");
          exit(1);}

  printf("VVedite celie chisla\n");
  for(int i=0;i<10;i++){
  fscanf(stdin,"%f",&mass[i]);//считываем данные с клавиатуры
  fflush(fp);
}for(int i=0;i<10;i++){
    fprintf(fp,"\n%f",&mass[i]);}//записываем в файл 
fclose(fp);


if((fp=fopen("F1.txt","r"))==NULL){
      printf("error opening file\n");
          exit(1);}

for(int i=0;i<10;i++){
  fscanf(fp,"%f",&mass[i]);//считывание данных из файла
  fflush(fp);
}for(int i=0;i<10;i++){
    fprintf(stdout,"\n%f",&mass[i]);}//выводим на экран
//fclose(fp);
    return 0;
}


--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
archimed7592
Дата 27.1.2008, 00:27 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Замени fprintf(fp, "%f", &mass[i]); на fprintf(fp, "%f", mass[i]); в двух местах.

Это сообщение отредактировал(а) archimed7592 - 27.1.2008, 00:28


--------------------
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   Вверх
kresh
Дата 27.1.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(archimed7592 @ 27.1.2008,  00:27)
Замени fprintf(fp, "%f", &mass[i]); на fprintf(fp, "%f", mass[i]); в двух местах.

я так делал,новозникает ошибка в процессе выполнения программы после ввода первого значения



Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  6161.jpg 112,82 Kb
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
archimed7592
Дата 27.1.2008, 02:56 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



kresh, я сказал fprintf в двух местах, а не fprintf и fscanf в 4-х местах smile.


M
archimed7592
На будущее: не сочти за труд скопировать, а, если это невозможно, перепечатать текст ошибки вместо того, чтобы выкладывать скриншот.



--------------------
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   Вверх
kresh
Дата 27.1.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо за помощь -все работает,не подскажите почему в 
Код
 fprintf(fp, "%f", mass[i]); 

 должно быть так ? smile 

Это сообщение отредактировал(а) kresh - 27.1.2008, 16:59
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
JackYF
Дата 27.1.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(kresh @  27.1.2008,  15:39 Найти цитируемый пост)
должно быть так ?

а почему должно быть не так? что смущает?


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


Шустрый
*


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

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



Цитата(JackYF @ 27.1.2008,  17:03)
Цитата(kresh @  27.1.2008,  15:39 Найти цитируемый пост)
должно быть так ?

а почему должно быть не так? что смущает?

я извиняюсь вопрос не коректно задал .Я имел ввиду почему при работе с файлами мы пишем 
Код

mass[i]
 так ,а при работе с потоками- 
Код
&mass[i]

  smile 
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
JackYF
Дата 27.1.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(kresh @  27.1.2008,  16:10 Найти цитируемый пост)
&mass[i]

где мы при работе с потоками пишем так?


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


Шустрый
*


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

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



Посмотрите мое первое сообщение-код.Там я писал код ,но программа не работала т.к я при записи в файл писал
Код

 printf("VVedite celie chisla\n");
  for(int i=0;i<10;i++){
  fscanf(stdin,"%f",&mass[i]);//считываем данные с клавиатуры
  fflush(fp);
}for(int i=0;i<10;i++){
 fprintf(fp,"\n%f",&mass[i]);}//записываем в файл

а archimed7592 посоветовал сделать так 
    <<Замени fprintf(fp, "%f", &mass); на fprintf(fp, "%f", mass[i]); в двух местах.>>[I]
сделал все заработало,но япросто хочу понять почему надо писать при работе с файлами так
Код

fprintf(fp, "%f", mass[i]);


а не так как я писал раньше 
Код
 fprintf(fp, "%f", &mass[i]); 

 ,вот  smile 
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
JackYF
Дата 27.1.2008, 18:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(kresh @  27.1.2008,  16:42 Найти цитируемый пост)
хочу понять почему надо писать при работе с файлами так

Цитата(kresh @  27.1.2008,  16:42 Найти цитируемый пост)
fprintf(fp, "%f", mass[i]);

Ты передаешь параметр в функцию на чтение. Передаешь по значению.

Цитата(kresh @  27.1.2008,  16:42 Найти цитируемый пост)
fscanf(stdin,"%f",&mass[i])

Это - обычная функция, но она принимает аргументы на запись, поэтому ты передаешь не значение переменной, а её адрес.

Потоки и файлы здесь абсолютно ни при чём.



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


Шустрый
*


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

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



Цитата(JackYF @ 27.1.2008,  18:13)
Цитата(kresh @  27.1.2008,  16:42 Найти цитируемый пост)
хочу понять почему надо писать при работе с файлами так

Цитата(kresh @  27.1.2008,  16:42 Найти цитируемый пост)
fprintf(fp, "%f", mass[i]);

Ты передаешь параметр в функцию на чтение. Передаешь по значению.

Цитата(kresh @  27.1.2008,  16:42 Найти цитируемый пост)
fscanf(stdin,"%f",&mass[i])

Это - обычная функция, но она принимает аргументы на запись, поэтому ты передаешь не значение переменной, а её адрес.

Потоки и файлы здесь абсолютно ни при чём.

Большое спасибо за разъяснение smile , теперь понял, можно идти дальше . smile 
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
archimed7592
Дата 28.1.2008, 03:31 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Файлы - это, по сути и есть потоки, а разница, как уже сказал JackYF, между scanf и printf smile. Просто, printf'у нужно знать только значение переменной, а scanf'у нужно изменять переменную...



--------------------
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   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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