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

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

Восстановить пароль Регистрация
 
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 19:28     Число "0" не записывается в файл #1
Из-за того что в файле нет числа "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;}
 
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 19:28     Число "0" не записывается в файл
Посмотрите здесь:

Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений C++
C++ дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no"
Game "Угадай число" как зделать запрет на "букви" ???? C++
C++ Что значит "%d %d\n" в функции вывода в файл fprintf(f, "%d %d\n", i, j);
C++ Класс "Комплексное число". Как считать и записать данные в файл?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 20:19     Число "0" не записывается в файл #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Ты же открываешь файл на запись и тупо ничего не пишешь...
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
14.06.2012, 20:35     Число "0" не записывается в файл #3
И на запись файл тоже тогда надо открывать как бинарный.
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 20:35  [ТС]     Число "0" не записывается в файл #4
Vlad1slav, там 1 стоит, и все равно ничего не идет запись нуля
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
14.06.2012, 20:39     Число "0" не записывается в файл #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 это максимальное число записываемых элементов
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 20:41  [ТС]     Число "0" не записывается в файл #6
Somebody, вообще, в файле вместо цифр символы левые
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 20:50     Число "0" не записывается в файл #7
Цитата Сообщение от Ish-ma Посмотреть сообщение
Somebody, вообще, в файле вместо цифр символы левые
Попробуйте открывать файл на запись и считывать файл в бинарном режиме или не бинарном, ато вы пишете в небинарном, а считываете в бинарном...

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

Цитата Сообщение от cactus09 Посмотреть сообщение
Те. 0 это максимальное число записываемых элементов
И? Если 0-максимальное число, то минимальное тоже 0, число записываемых элементов=0, т.е. ничего записываться не будет?
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 20:54  [ТС]     Число "0" не записывается в файл #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;}
 
//---------------------------------------------------------------------------
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 21:16     Число "0" не записывается в файл #9
Решил проверить программу:
http:// clip2net . com/s/228vu (убери пробелы)
Всё работает, всё пишется как надо и считывается соответственно)
Ish-ma
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 15
14.06.2012, 21:33  [ТС]     Число "0" не записывается в файл #10
Vlad1slav, ты через что заппускал?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 22:30     Число "0" не записывается в файл
Еще ссылки по теме:

C++ #include "Sales_item.h" - ошибка "включаемый файл включает самого себя"
Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот C++
Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот C++

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

Или воспользуйтесь поиском по форуму:
Vlad1slav
21 / 21 / 5
Регистрация: 16.09.2009
Сообщений: 111
14.06.2012, 22:30     Число "0" не записывается в файл #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;
}
Yandex
Объявления
14.06.2012, 22:30     Число "0" не записывается в файл
Ответ Создать тему
Опции темы

Текущее время: 19:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru