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

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

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

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

09.10.2008, 18:40. Просмотров 1778. Ответов 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.. =(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2008, 18:40     Text -> File.txt -> Console
Посмотрите здесь:

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 помогите, пожалуйста

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

Ошибка при "сборке" Cannot open include file: 'stdafx.h': No such file or directory - C++
Я полный ноль в C++=( Вот код:#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #define MAXINJECTSIZE 4096 ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
09.10.2008, 19:01     Text -> File.txt -> Console #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);
}
Тебе не кажется странным,что ты закрыл файл и из него пытаешься считывать?
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
09.10.2008, 19:10  [ТС]     Text -> File.txt -> Console #3
да смешно ))) с дебагерами игрался, не поставил назад так как было)
А теперь о твоих советах
1) Поставил fclose(f); в конце программы.
2) название структуры 2й сменил )))) а=ba

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

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

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

Добавлено через 1 минуту 6 секунд
хотя что-то я сомневаюсь,в надежности этого источника) погугли сам.
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
09.10.2008, 19:28  [ТС]     Text -> File.txt -> Console #7
Следуем твоему совету:
fscanf("f,%s %s %d",name,surname,bal)
получаетса строка в тхи такого вида:
Андрей,Гугль,2
как считывать потом розмещая в 3 переменные?
может 2мя структурами проще будет ? )) (в плане написания программы )
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
09.10.2008, 19:32     Text -> File.txt -> Console #8
Cделай просто и эффективно. Запиши. Потом закрой файл.Потом открой для чтения. Считай.
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
10.10.2008, 00:07  [ТС]     Text -> File.txt -> Console #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 и чтоб в него с файла попадала строка чисел.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
10.10.2008, 00:19     Text -> File.txt -> Console #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 для тэга кода есть решетка сверху.выделяешь,нажимаешь решетку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2008, 14:23     Text -> File.txt -> Console
Еще ссылки по теме:

Error 1 fatal error C1083: Cannot open include file: 'fstream.h': No such file or directory - C++
// 3.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;fstream.h&gt; #include &lt;iomanip.h&gt; #define MIN_DISCOUNT 0.97; ...

Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory - C++
// 1.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;iostream.h&gt; #include &lt;fstream.h&gt; using namespace std; // Клас...

Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory - C++
#include &quot;stdafx.h&quot; #include &lt;iostream.h&gt; int main() { double d=1.321e9; int n=1024;

Error C1083: Cannot open source file: 'Source.cpp': No such file or directory - C++
Помогите плз!!!!! неделю сражаюсь с VS 2013 и не могу даже запустить простейшую &quot;hello&quot; ((( создавал консольное приложение win32,...


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

Или воспользуйтесь поиском по форуму:
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
10.10.2008, 14:23  [ТС]     Text -> File.txt -> Console #11
спс
Код
fscanf(f, "%d %s %s",&s.bal,s.name,s.surname);
данный синтаксис будет считать что после комы и до появы следующей идет строка? (тобишь то, что должно помещатьса в переменную ? )

Добавлено через 29 минут 28 секунд
Да. Работает помогло спс
Yandex
Объявления
10.10.2008, 14:23     Text -> File.txt -> Console
Ответ Создать тему
Опции темы

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