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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 22:05   #1
Intess
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 16
По умолчанию Запись в файл

Добрый вечер!
У меня возникла проблема: составлена программа которая записывает 5 строк в файл, но почему-то в созданном файле первой всегда идёт пустая строка, может кто объяснить почему и как убрать это?

Код:
#include <stdio.h>
#include <string.h>
const int MAXLEN=100;
void inputt(FILE*);
int main(){
 char filename[MAXLEN];
 FILE *f;
 
   printf("Input name of file\n");
   scanf("%s", filename);
   if ((f=fopen(filename, "w"))==NULL)
        {
           perror(filename);
           return 1;
        }
   inputt(f);
   printf("\n");
    
   return 0;
}

void inputt(FILE *f){      
 int i;
 char bal[MAXLEN];
    for(i=0 ; i<5 ;i++)
    {
     fgets(bal, MAXLEN, stdin);
     fputs(bal, f);
    }
   fclose(f);
}

Последний раз редактировалось Intess; 16.11.2011 в 23:14.
Intess вне форума Ответить с цитированием
Старый 16.11.2011, 22:32   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,821
По умолчанию

у вас в буфере остался ентер после ввода имени файла, заигнорьте его
p51x вне форума Ответить с цитированием
Старый 16.11.2011, 22:56   #3
Intess
Пользователь
 
Регистрация: 21.03.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
у вас в буфере остался ентер после ввода имени файла, заигнорьте его
спасибо большое)
вот так всё нормально стало.
Код:

#include <stdio.h>
#include <string.h>
const int MAXLEN=100;
void inputt(FILE*);
int main(){
 char filename[MAXLEN];
 FILE *f;
 
   printf("Input name of file\n");
   gets(filename);
   if ((f=fopen(filename, "w"))==NULL)
        {
           perror(filename);
           return 1;
        }
   inputt(f);
   printf("\n");
    
   return 0;
}

void inputt(FILE *f){      
 int i;
 char bal[MAXLEN];
    for(i=0 ; i<5 ;i++)
    {
     fgets(bal, MAXLEN, stdin);
     fputs(bal, f);
    }
   fclose(f);
}

Последний раз редактировалось Intess; 16.11.2011 в 23:14.
Intess вне форума Ответить с цитированием
Старый 19.11.2011, 22:11   #4
KANDRAT
Пользователь
 
Аватар для KANDRAT
 
Регистрация: 11.05.2010
Сообщений: 32
По умолчанию

а зачем так усложнять все ?
Цитата:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream fle("путь к файлу",ios::app);
/*ios::app для того чтобы открывая ставил указатель на конец файла*/
fle<<"сносим винду ставим пингвина!\n";
}
KANDRAT вне форума Ответить с цитированием
Старый 20.11.2011, 01:14   #5
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от KANDRAT Посмотреть сообщение
а зачем так усложнять все ?
Видимо потому что это лаба по C, а не по C++?
Son Of Pain вне форума Ответить с цитированием
Старый 20.11.2011, 02:47   #6
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2KANDRAT
Цитата:
/*ios::app для того чтобы открывая ставил указатель на конец файла*/
неверно. ios::app нужен для того, чтобы перед каждой операцией записи в поток указатель устанавливался на конец, причем атомарно
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись информации в файл в файл Anubys Win Api 0 04.11.2011 23:27
Запись в файл hiho Общие вопросы Delphi 7 11.03.2011 04:50
запись в файл grater83 Общие вопросы Delphi 10 27.12.2009 15:01
Запись в файл В_И_К_Т_О_Р Помощь студентам 9 30.01.2008 22:46