Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

25.05.2011, 01:05. Просмотров 391. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2011, 01:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с файлами в Си, не могу найти ошибку в коде (C++):

Не могу найти ошибку в коде - C++
Не могу найти ошибку в коде. Помогите плиз. Нужно вычислить приближённое значение суммы этого бесконечного ряда. #include &lt;iostream&gt;...

Не могу найти ошибку в коде - C++
class genetic { typedef bool* chr; typedef vector&lt;chr&gt; vals; vals population; bool...

Не могу найти ошибку в коде - C++
Привет всем. У меня не получается построить решение. Вот код. #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; using...

Не могу найти ошибку в коде - C++
Помогите пожалуйста найти ошибку в коде: #include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; const int n = 8; ...

Не могу найти ошибку в коде - C++
Здравствуйте еще раз! У меня возникла проблема: В написанном мною коде какая то ошибка, которую ни я, ни компилятор, не может выявить. ...

Не могу найти ошибку в коде - C++
Игра &quot;БлэкДжек&quot; Ошибка - &quot;Прекращена работ программы&quot;. С чем это связано - не могу понять... // Д/З 25 Блэк-Джек #include...

3
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);
еще хочу заметить, что данное задание почти наверняка не подразумевало ТАКОЙ записи, т.е. текстовой информации в текстовый файл, а скорее всего имелась ввиду запись в бинарный файл со всемы вытекающими..
1
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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
Nox4o
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 3
25.05.2011, 12:27  [ТС] #4
Большое спасибо, все работает
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 12:27
Привет! Вот еще темы с ответами:

Не могу найти ошибку в коде :( - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; void main () { clrscr(); float eps=0.0001; float x,S,ocr; scanf...

Не могу найти ошибку в коде - C++
Доброго времени суток. Не могу найти ошибку в коде. Задача: Периодическая функция F(x) определена на всей числовой прямой и имеет период...

Не могу найти ошибку в коде - C++
Работаю со связанным списком. нужно удалить из него указанный элемент. Вот код функции удаления: void List::Delete(int Number){ ...

Не могу найти ошибку в коде - C++
Добрый вечер. Собственно, в универе дали задачу Программу я сделал, работает она верно при небольшой разнице начальной и конечной...


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

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

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