0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 3
1

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

25.05.2011, 01:05. Показов 500. Ответов 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 Постарался как можно конкретнее описать проблему, так что извините за "многа букв"
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2011, 01:05
Ответы с готовыми решениями:

Работа с файлами (найти ошибку в коде)
Здравствуйте, столкнулся с такой проблемой. Написал программу, без считывания и вывода в файл она...

Работа с файлами: запись, добавление, чтение (найти ошибку в коде)
Надо создать программу для работы с файлами. Вводим значения: 1: запись 2:добавление 3:чтение ...

Найти ошибку в коде работы с файлами
Ребят, помогите плиз, походу проблема с логикой вычисления, но я уже не вывожу, хелпаните кто можем...

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два...

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

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

Цитата Сообщение от grindaah
думаю проблема в этом, замените
gets() и scanf("%s", ...) - разные вещи
1
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 3
25.05.2011, 12:27  [ТС] 4
Большое спасибо, все работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2011, 12:27

Найти ошибку в коде работы с массивами и файлами последовательного доступа
Выдает неправильный вывод, не знаю что за проблема, найдите ошибку пожалуйста и исправьте: ...

Работа с файлами, найти ошибки в коде
Почему прога не работает подскажите в чём проблема . Program Zapfile; Uses Crt; type ff= ...

Не могу найти ошибку в коде
Всем добрый день. Скорее всего, мой вопрос покажется глупым. Но я только учусь и не могу сама...

Не могу найти ошибку в коде
Я хочу чтобы эта таблица была по центру, а она ровняется по левому краю сайта, помогите найти...

не могу найти ошибку в коде!
Здраствуйте! есть такая штука: &lt;td&gt;&lt;textarea name=&quot;check1&quot; id=&quot;check1&quot;...

Не могу найти ошибку в коде
Данный код должен выводить данное пользователем количество чисел Фибоначчи(каждое следующее число...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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