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

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

Войти
Регистрация
Восстановить пароль
 
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
#1

Число "0" не записывается в файл - C++

14.06.2012, 19:28. Просмотров 601. Ответов 10
Метки нет (Все метки)

Из-за того что в файле нет числа "0" программа работает не правильно. Как сделать так, чтобы в файле появился "0"
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//---------------------------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
const n=4;
  struct student
  {char fio[20];
   int stip;
   char zitel[7];
   };
  student gr[n];
   FILE *OutFile, *InFile, *OutFil;
   int i,q;
   int main()
  {OutFile=fopen("dat.txt", "w");
     for (i=0; i<n; i++)
    {printf("Fio "); scanf("%s",&gr[i].fio);
     printf("razmer stipendii "); scanf("%d",&gr[i].stip);
     printf("mesto zitelstva "); scanf("%s",&gr[i].zitel);
    }
    for (i=0;i<n;i++)
         fwrite(&gr[i],sizeof(student),0,OutFile);
    fclose(OutFile);
 
   OutFil=fopen("answer.txt", "w");
   InFile=fopen("dat.txt", "rb");
   for (i=0;i<n;i++)
   fread(&gr[i],sizeof(student),1,InFile);
    
    fprintf(OutFil,"%s\n","student: ");
   for (i=0; i<n; i++)
   {if(gr[i].stip==0)
     if (gr[i].zitel=="o")
    fprintf(OutFil,"%s \n",gr[i].fio);};
    fclose(OutFil);
    getch();
    return 0;}
 
//---------------------------------------------------------------------------
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 19:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Число "0" не записывается в файл (C++):

Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка" - C++
Есть проблема. Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: &quot;целое...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" - C++
Подскажите пожалуйста, как убрать ошибки с этой программы? (делала перегрузку &quot;ввести в поток&quot; и &quot;вывести с потока&quot;, а также &quot;умножить...

Вывести на экран монитора число с наименованием "год","года", "лет" - C++
Прошу прогу в С++. Дано натуральное число n (n&lt;=100), определяющее в годах возраст человека. Составить программу, по которой на экран...

Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное - C++
Задана последовательность из 5 цифр. Для каждого числа вывести на экран &quot;true&quot; - если число четное и &quot;false&quot; - если не четное. ...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 20:19 #2
Цитата Сообщение от Ish-ma Посмотреть сообщение
for (i=0;i<n;i++)
* * * * *fwrite(&gr[i],sizeof(student),0,OutFile);
http://www.cplusplus.com/reference/c...cstdio/fwrite/
Не понимаю, что делает в 3 параметре цифра 0Ты же открываешь файл на запись и тупо ничего не пишешь...
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
14.06.2012, 20:35 #3
И на запись файл тоже тогда надо открывать как бинарный.
0
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 20:35  [ТС] #4
Vlad1slav, там 1 стоит, и все равно ничего не идет запись нуля
0
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
14.06.2012, 20:39 #5
Цитата Сообщение от Vlad1slav Посмотреть сообщение
е понимаю, что делает в 3 параметре цифра 0
Копипаст из нета
C++ (Qt)
1
2
3
4
5
int fwrite(buffer, size, count, stream);
               char *buffer; указатель на записываемые данные.
               int size; размер элемента в байтах.
               int count; максимальное число записываемых элементов.
               FILE *stream; указатель на структуру типа FILE.
Те. 0 это максимальное число записываемых элементов
0
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 20:41  [ТС] #6
Somebody, вообще, в файле вместо цифр символы левые
0
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 20:50 #7
Цитата Сообщение от Ish-ma Посмотреть сообщение
Somebody, вообще, в файле вместо цифр символы левые
Попробуйте открывать файл на запись и считывать файл в бинарном режиме или не бинарном, ато вы пишете в небинарном, а считываете в бинарном...

Цитата Сообщение от Ish-ma Посмотреть сообщение
Vlad1slav, там 1 стоит, и все равно ничего не идет запись нуля
28 строка, там 0 написан

Цитата Сообщение от cactus09 Посмотреть сообщение
Те. 0 это максимальное число записываемых элементов
И? Если 0-максимальное число, то минимальное тоже 0, число записываемых элементов=0, т.е. ничего записываться не будет?
0
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 20:54  [ТС] #8
Vlad1slav, проверял с бинарным и небинарным режимом. Все так же осталось. А то что ноль там стоит, то это я неправильно скопировал

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//---------------------------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
const n=4;
  struct student
  {char fio[20];
   int stip;
   char zitel[7];
   };
  student gr[n];
   FILE *OutFile, *InFile, *OutFil;
   int i,q;
   int main()
  {OutFile=fopen("dat.txt", "wb");
     for (i=0; i<n; i++)
    {printf("Fio "); scanf("%s",&gr[i].fio);
     printf("razmer stipendii "); scanf("%d",&gr[i].stip);
     printf("mesto zitelstva "); scanf("%s",&gr[i].zitel);
    }
    for (i=0;i<n;i++)
         fwrite(&gr[i],sizeof(student),1,OutFile);
    fclose(OutFile);
 
   OutFil=fopen("answer.txt", "w");
   InFile=fopen("dat.txt", "rb");
   for (i=0;i<n;i++)
   fread(&gr[i],sizeof(student),1,InFile);
    
    fprintf(OutFil,"%s\n","student: ");
   for (i=0; i<n; i++)
   {if(gr[i].stip==0)
     if (gr[i].zitel=="o")
    fprintf(OutFil,"%s \n",gr[i].fio);};
    fclose(OutFil);
    getch();
    return 0;}
 
//---------------------------------------------------------------------------
0
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 21:16 #9
Решил проверить программу:
http:// clip2net . com/s/228vu (убери пробелы)
Всё работает, всё пишется как надо и считывается соответственно)
1
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 21:33  [ТС] #10
Vlad1slav, ты через что заппускал?
0
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 22:30 #11
Цитата Сообщение от Ish-ma Посмотреть сообщение
Vlad1slav, ты через что заппускал?
vs2010, вот код:
stdafx.h
C++
1
2
3
4
5
6
7
8
9
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
 
#include <conio.h>
#include <string.h>
my.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
 
#include <conio.h>
#include <stdio.h>
#include <string.h>
 
const int n=4;
 
struct student
{
    char fio[20];
    int stip;
    char zitel[7];
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    student gr[n];
    FILE *OutFile, *InFile;
 
    OutFile=fopen("dat.txt", "wb");
    for (int i=0; i<n; i++)
    {
        printf("Fio ");             scanf("%s",&(gr+i)->fio);
        printf("razmer stipendii ");scanf("%d",&(gr+i)->stip);
        printf("mesto zitelstva "); scanf("%s",&(gr+i)->zitel);
    }
 
    for (int i=0;i<n;i++)
        fwrite(gr+i,sizeof(student),1,OutFile);
    fclose(OutFile);
 
    OutFile=fopen("answer.txt", "w");
    InFile=fopen("dat.txt", "rb");
    for (int i=0;i<n;i++)
        fread(gr+i,sizeof(student),1,InFile);
    
    bool b=false;
 
    for (int i=0; i<n; i++) 
        if(!(gr+i)->stip&&!strcmp((gr+i)->zitel, "o")) {
            if (!b) {
                fprintf(OutFile,"%s\n","student: ");
                printf("%s\n","student: ");
                b=true;
            }
            fprintf(OutFile, "%s\n", gr+i);
            printf("%s\n", gr+i);
        }
 
    if (!b) {
        fprintf(OutFile, "%s", "Student's not found");
        printf("%s", "Student's not found");
    }
 
    fclose(OutFile);
    fclose(InFile);
 
    getch();
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 22:30
Привет! Вот еще темы с ответами:

Класс "Комплексное число". Как считать и записать данные в файл? - C++
Надо переделать код программы, чтобы данные шли из входного файла и записывались в выходной Во входном файле 2 комплексных числа a и...

Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений - C++
Здравствуйте, помогите написать две программы. 1) Дано натуральное число. Найти сумму последних &quot;n&quot; цифр &quot;n&quot; числа, не применяя...

дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" - C++
Вот попробовал написать код но ошибку выдает: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; int main() { ...

Game "Угадай число" как зделать запрет на "букви" ???? - C++
Привет всем кто решил помочь. Написал прогру, но есть проблемка, когда ввожу &quot;букву&quot; вся прога беситса как мне зделать так что б он...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.06.2012, 22:30
Ответ Создать тему
Опции темы

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