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

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

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

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

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

Программа "задумывает" число и предлагает пользователю его угадать C++
C++ "Угадай число" (напишите программу, хочу проверить со своей).
C++ Найти наименьшее однозначное число "х", удовлетворяющее условию
C++ Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ")
Программа отгадывает загаданное пользователем число: реализовать "защиту от дурака" C++
C++ Написать функцию, определяющую, является ли число "счастливым"
Сгенерировать число "1" или "2" 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
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 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++ "Перевести натуральное число из 8-ричной в 10-чную систему счисления"
C++ Нужно доделать код! Исключить из дерева сортировки число "2"
Из текстового файла прочитать в массивы пары "символ - число" C++
Реализовать генерацию случайных чисел для игры "Угадай число" C++
C++ Добавить целое число в очередь с помощью "operator <<"

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

Или воспользуйтесь поиском по форуму:
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" не записывается в файл
Ответ Создать тему
Опции темы

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