Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18

Text -> File.txt -> Console

09.10.2008, 18:40. Показов 2448. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2008, 18:40
Ответы с готовыми решениями:

Нужно заменить строку в файле text.txt словами из другого файла words.txt
Допустим в файле words.txt есть какие-то слова ,например : #один,#два,#три. И есть файл text.txt,где есть слова: один,два,три,четыре,пять...

Вывести таблицу частоты букв использования латинского алфавита для данного текстового файла text.txt в файл f1.txt
/********************************************************************** Вывести таблицу частоты букв использования латинского алфавита...

Дан файл text.txt, там два числа: 2 и 11. Найти их сумму и записать ее в файл out.txt
Я знаю как написать программу для нахождения сумы в Delphi, но я не знаю как написать вот такую программу: Дан файл text.txt, там два...

10
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
09.10.2008, 19:01
Code
1
2
int N = 0;
char * massiv = new char[N];

Code
1
2
 
a a;
тоже класс не надо так делать ))

Code
1
2
3
4
5
6
7
8
9
 
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
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
09.10.2008, 19:10  [ТС]
да смешно ))) с дебагерами игрался, не поставил назад так как было)
А теперь о твоих советах
1) Поставил fclose(f); в конце программы.
2) название структуры 2й сменил )))) а=ba

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

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

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

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

Добавлено через 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
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
10.10.2008, 00:19
Я уже говорил) убери структуру "а",она не нужна.Есть функции
fprintf
fscanf
которые позволяют вводить-выводить в файл/из файла переменные с использованием форматирования.
сохранение Stud вылгядит так
Code
1
fprintf(f,"%d %s %s\n",s.bal,s.name,s.surname);
загрузка так:
Code
1
fscanf(f, "%d %s %s",&s.bal,s.name,s.surname);
P.S для тэга кода есть решетка сверху.выделяешь,нажимаешь решетку.
0
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
10.10.2008, 14:23  [ТС]
спс
Code
1
fscanf(f, "%d %s %s",&s.bal,s.name,s.surname);
данный синтаксис будет считать что после комы и до появы следующей идет строка? (тобишь то, что должно помещатьса в переменную ? )

Добавлено через 29 минут 28 секунд
Да. Работает помогло спс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2008, 14:23
Помогаю со студенческими работами здесь

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

File/text/real
Доброго времени суток. Написал небольшую програмку, которая берет из файла данные и по ним строит некую треугольную диаграмму. Но есть...

Robots.txt исчез с CPanel но есть в google console
Добрый день всем! Помогте разобаться, пожалуйста! Не могу найти robots.txt в Cpanel, но есть в google console и теститься, и по ссылке...

Форма html.JSSave Text to File
&lt;tr&gt; &lt;td&gt;Filename to Save As:&lt;/td&gt; &lt;td&gt;&lt;input id=&quot;inputFileNameToSaveAs&quot;&gt;&lt;/input&gt;&lt;/td&gt; &lt;td&gt;&lt;button...

результат выборки из БД: rs.next(); String text=rs.getString('text'); <input type=text name=name value=<%=text%>>
Возникла проблема в текстовое поле надо вывести результат выборки из БД rs.next(); String text=rs.getString('text'); &lt;input...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru