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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
#1

Text -> File.txt -> Console - C++

09.10.2008, 18:40. Просмотров 1791. Ответов 10
Метки нет (Все метки)

Привет народ, пишу курсовую, 2ю неделю меня подкидывет от того что вся литература которую читаю не оказывает влияния на требуемый результат для достижения которого осталось ток с файлом розобраться
Просьба помочь в следующем:
1. Создаем файл.
2. Записываем в него чтото.
3. Выводим это на экран стркоу файла.

Пример того как я "заношу" текст в файл.
C++
1
fprintf(f,"%s\n",mas[i].name);
Пример попытки чтения и вывода на экран.
C++
1
2
fgets(a.name,15,f);
printf("%s",a.name);
Что я делаю нетак? на выводе получаетса бред наподобе ╠╠╠╠╠╠╠╠☺ (в конце смайлик ........ )


Вот собствено вся программа
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
62
63
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <fstream.h>
struct Stud
{
int bal;
char name[15]; Главная структура 
char Surname[15];
};
struct a //Структура в которую буду заносить с тхт данные
{
char bal[3]; 
char name[15]; 
char Surname[15];
};
 
 
void main()
{
FILE *f;
f=fopen("C:\\MyFile.txt","w+");
//----------------------------------------Масив струткуры Студ
int N=0; 
char *massiv = new char[N];
printf("Enter number of elements\n");
scanf("%d",&N);
struct Stud *mas = (struct Stud*)malloc(N*sizeof(struct Stud));
 
//--------------------------------------Заполняем его + записываем в тхт файл
for (int i=0;i<N;i++)
{
printf("\n----%d----\n\tName: ",i+1);
scanf("%s",&mas[i].name);
fprintf(f,"%s\n",mas[i].name);
printf("\n\tSurname: ");
scanf("%s",mas[i].Surname);
fprintf(f,"%s\n",mas[i].Surname);
printf("\n\tBal: ");
scanf("%d",&mas[i].bal);
fprintf(f,"%d\n",mas[i].bal);
printf("\n");
}
 
 
fclose(f);
//--------------------------------------считываем данные с тхт и заносим в структуру а (как я говорил это "Структура в которую буду заносить с тхт данные"
 
a a;
for (i=0;i<1;i++)
{ 
 
fgets(a.name,15,f);
fgets(a.Surname,15,f);
fgets(a.bal,3,f);
 
}
//--------- ПЫТАЕМСЯ вывести на экран.
 
printf("MyFile.txt\n\n\t\t%s",a.name);
printf("\n\t\t%s",a.Surname);
printf("\n\t\t%s\n\n\n",a.bal);
}
Получаем рузультат:
Нейм х
Сенейм х
Бал х
не зависимо от значения х вывод следующий

╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠☺
╠╠╠╠╠╠╠╠╠☺
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠☺
Press any key 2 conti.. =(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2008, 18:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Text -> File.txt -> Console (C++):

Text file - C++
Здравствуйте. помогите программу переделать на Паскаль.

Простая работа с file.txt (ввод/вывод) - C++
Прочёл пару статей на эту тему, коды не пашут. Объясните пожалуйста как открыть файл, записать данные из этого файла в какой либо...

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt - C++
Программным путем: 1. В папке С:\temp создайте папки К1 и К2. 2. В папке К1: a) создайте файл t1.txt, в который запишите следующий...

Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt - C++
Здравствуйте, нужно записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt помогите, пожалуйста

Переписать все числа из файлов 1.txt и 2.txt в файл 3.txt - C++
Здравствуйте! Нужна помощь. Есть два текстовых файла 1.txt и 2.txt в них есть числа. реализовать консольное приложение которое...

fatal error C1083: Cannot open include file: 'Date.h': No such file or directory - C++
Всем добрый вечер! У меня проблема. Мне нужно, чтобы мой класс содержал обьект другого класса как элемент данных, я его добавила в проект,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
XuTPbIu_MuHTAu
Эксперт С++
2225 / 740 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
09.10.2008, 19:01 #2
Код
int N = 0;
char * massiv = new char[N];

Код
 
a a;
тоже класс не надо так делать ))

Код
 
fclose(f);
a a;
for (i=0;i<1;i++)
{ 
fgets(a.name,15,f);
fgets(a.Surname,15,f);
fgets(a.bal,3,f);
}
Тебе не кажется странным,что ты закрыл файл и из него пытаешься считывать?
0
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
09.10.2008, 19:10  [ТС] #3
да смешно ))) с дебагерами игрался, не поставил назад так как было)
А теперь о твоих советах
1) Поставил fclose(f); в конце программы.
2) название структуры 2й сменил )))) а=ba

Результат:
=====================
=====================
======
Press any key 2 conti.. =(
0
XuTPbIu_MuHTAu
Эксперт С++
2225 / 740 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
09.10.2008, 19:18 #4
эй,я не советовал переместить закрытие в конец программы
Учитывая последнюю поправку,теперь ты открываешь файл на запись,а пытаешься считать) такие дела...

Добавлено через 4 минуты 1 секунду
Вообще,перейду к советам. Зачем тебе вообще эта структура,"а" ? неужели каждый раз нужно две структуры для чтения и записи?) нет,конечно. В этом случае просто используй форматированный ввод/вывод и для файлов.Так,например:
Код
fscanf("f,%s %s %d",name,surname,bal)
Так же замечу,что ты считываешь N раз,а выводишь один раз в конкретном коде. И еще, не воспринимай то,что я пишу буквально - я даю общие советы,реализовать и применить их нужно тебе самому)
0
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
09.10.2008, 19:19  [ТС] #5
w+
Создать текстовый файл для чтения/записи

Вроде все оки...... Вроде....
0
XuTPbIu_MuHTAu
Эксперт С++
2225 / 740 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
09.10.2008, 19:27 #6
"w+" — для записи, с возможностью создания, если файла нет
"w" --- для записи; если указанного файла нет, fopen вернет NULL
"a" --- для записи в конец файла; необходимо, чтобы указанный файл существовал, так же как и в режиме "w"
"a+" --- для записи в конец файла; если файл не существует, он будет создан
"r" -- для чтения
"r+" — для чтения и записи
sort of..

Добавлено через 1 минуту 6 секунд
хотя что-то я сомневаюсь,в надежности этого источника) погугли сам.
0
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
09.10.2008, 19:28  [ТС] #7
Следуем твоему совету:
fscanf("f,%s %s %d",name,surname,bal)
получаетса строка в тхи такого вида:
Андрей,Гугль,2
как считывать потом розмещая в 3 переменные?
может 2мя структурами проще будет ? )) (в плане написания программы )
0
XuTPbIu_MuHTAu
Эксперт С++
2225 / 740 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
09.10.2008, 19:32 #8
Cделай просто и эффективно. Запиши. Потом закрой файл.Потом открой для чтения. Считай.
0
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
10.10.2008, 00:07  [ТС] #9
Получилось!!!!!!!!!! ))) Наконецто!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Добавлено через 4 часа 33 минуты 20 секунд


Помогите розобраться
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
struct Stud
{
    int bal;
    char name[15];
    char Surname[15];
};
struct a
{
    char bal[4];
    char name[15];
    char Surname[15];
};
//======================================
         Заполняем *.тхт масивом струтур Stud
//======================================
    
 
           f=fopen("C:\\MyFile.txt","r+");
    printf("MyFile.txt\n");
    for (i=0;i<N;i++)
    {  
//---------------Забераем с *.тхт строки и помещаем их в масив струтур а. 
        fgets(masa[i].name,15,f);
        fgets(masa[i].Surname,15,f);
        fgets(masa[i].bal,4,f);
//-----------------Выводим содржимое масива струтур а на екран.
        printf("\n%s",masa[i].name);
        printf("\n%s",masa[i].Surname);
        printf("\n%s",masa[i].bal);
 
    
    }
 
fclose(f);
 
}
Если масив структуры Студ розмером 2 то при выводе после заполнения получаетса так:

Масив 1
имя
фамилия
бал (3 цифры)

Масив 2
имя
фамилия

Вопрос:
Почему не выводит бал ? и можно ли както по другому заполнять масив структур "а" ? имею ввиду сделать так чтоб вместо char bal[4] было просто int bal и чтоб в него с файла попадала строка чисел.
0
XuTPbIu_MuHTAu
Эксперт С++
2225 / 740 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
10.10.2008, 00:19 #10
Я уже говорил) убери структуру "а",она не нужна.Есть функции
fprintf
fscanf
которые позволяют вводить-выводить в файл/из файла переменные с использованием форматирования.
сохранение Stud вылгядит так
Код
fprintf(f,"%d %s %s\n",s.bal,s.name,s.surname);
загрузка так:
Код
fscanf(f, "%d %s %s",&s.bal,s.name,s.surname);
P.S для тэга кода есть решетка сверху.выделяешь,нажимаешь решетку.
0
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
10.10.2008, 14:23  [ТС] #11
спс
Код
fscanf(f, "%d %s %s",&s.bal,s.name,s.surname);
данный синтаксис будет считать что после комы и до появы следующей идет строка? (тобишь то, что должно помещатьса в переменную ? )

Добавлено через 29 минут 28 секунд
Да. Работает помогло спс
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2008, 14:23
Привет! Вот еще темы с ответами:

BSCMAKE: error BK1506 : cannot open file '.\Debug\RESDlg.sbr': No such file or directory - C++
--------------------Configuration: RES - Win32 Debug-------------------- Compiling... RESDlg.cpp c:\program files\microsoft visual...

Cannot open include file: 'stream.h': No such file or directory - C++
Для использования функций ввода/вывода cin/cout как я понимаю необходимо подключени библиотеки stream.h ? Но Visual Studio 2008 ругается...

Cannot open include file: 'libr.h': No such file or directory - C++
Всем доброго времени суток, нужна помощь. Ошибка в 3 строке, не могу понять почему, может кто подскажет?(Cannot open include file:...

Cannot open include file: 'iostream.h': No such file or directory - C++
Доброго времени суток всем! Требуется помощь. Задание звучит так:Предусмотреть возможность работы с произвольным числом книг, поиска книги...


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

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

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