Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nox4o
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 3
#1

Работа с файлами в Си, не могу найти ошибку в коде - C++

25.05.2011, 01:05. Просмотров 370. Ответов 3
Метки нет (Все метки)

Язык: "Си"
Задача: "Создать файл, содержаший сведения о месячной зарплате N рабочих завода. В файле содержатся сведения: фамилия рабочего, наименование цеха, размер зарплаты за меся. Имя файла передается через командную строку. "

Код
#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    int n=0,i=0; 
    char sod[100],
         nline='\n';
    
    printf("введите количество рабочих \n");
    scanf("%d", &n);
    
    FILE *pFile;
    pFile = fopen (argv[1],"w+");
    
    if ((pFile = fopen (argv[1],"w+"))==NULL) 
     {
               printf("неудалось открыть файл\n");
               return 1;
     }
    
    for(i=0; i<n; i++)
     {
      printf("введите имя %d рабочего завода, намер его цеха и зарплату за месяц \n", i+1);
      gets(sod);
      fputs(sod, pFile );
      fputc(nline, pFile);
     }
    
  fclose(pFile);
    
    system("pause");
 return 0;
}
Когда запускаю, получаю:

введите количество рабочих
2
введите имя 1 рабочего завода, намер его цеха и зарплату за месяц
введите имя 2 рабочего завода, намер его цеха и зарплату за месяц
_

Тоесть он как бы перескакивает через 1 шаг, ведь после строчки
"введите имя 1 рабочего завода, намер его цеха и зарплату за месяц" , он должен ждать пока я чтонить ему введу, а он сразу же выводит "введите имя 2 рабочего завода, намер его цеха и зарплату за месяц" , и только потом ждет ввода.
Неподскажете в чем дело?

P.S Постарался как можно конкретнее описать проблему, так что извините за "многа букв"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2011, 01:05     Работа с файлами в Си, не могу найти ошибку в коде
Посмотрите здесь:

Не могу найти ошибку в коде C++
Не могу найти ошибку в коде C++
C++ Не могу найти ошибку в коде :(
C++ Не могу найти ошибку в коде
C++ Не могу найти ошибку в коде
Не могу найти ошибку в коде C++
C++ Не могу найти ошибку в коде
C++ не могу найти ошибку в коде.1 курс (с++)
Не могу найти ошибку в коде C++
C++ Не могу найти ошибку в коде
C++ Не могу найти и исправить ошибку в коде
C++ Не могу найти ошибку в коде

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grindaah
20 / 20 / 0
Регистрация: 25.05.2011
Сообщений: 62
25.05.2011, 03:30     Работа с файлами в Си, не могу найти ошибку в коде #2
не пойму, почему вы используете scanf для ввода количества рабочих, но не доверяете ей же для ввода строки, используя gets

думаю проблема в этом, замените
C++
1
gets(sod);
на
C++
1
scanf("%s", &sod);
еще хочу заметить, что данное задание почти наверняка не подразумевало ТАКОЙ записи, т.е. текстовой информации в текстовый файл, а скорее всего имелась ввиду запись в бинарный файл со всемы вытекающими..
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.05.2011, 08:28     Работа с файлами в Си, не могу найти ошибку в коде #3
C
1
scanf("%d", &n);
C
1
scanf("%d%*c", &n);
Цитата Сообщение от Nox4o
Тоесть он как бы перескакивает через 1 шаг, ведь после строчки
после ввода количества нажат <return>

Цитата Сообщение от grindaah
думаю проблема в этом, замените
gets() и scanf("%s", ...) - разные вещи
Nox4o
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 3
25.05.2011, 12:27  [ТС]     Работа с файлами в Си, не могу найти ошибку в коде #4
Большое спасибо, все работает
Yandex
Объявления
25.05.2011, 12:27     Работа с файлами в Си, не могу найти ошибку в коде
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru