С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
#1

пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить - C++

09.07.2011, 17:37. Просмотров 1629. Ответов 31
Метки нет (Все метки)

по заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. чтобы избежать шаблона, перечень желаемых благ выбирать как случайное подмножество из заготовленного списка. для универсальности программы можно сделать переменным и название праздника

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
64
65
66
67
68
#include <stdafx.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <string.h>
 
#define  file_imya "imena.txt"
#define  file_prazd "prazd.txt"
#define  file_pozdr "pozdr.txt"
#define  file_otvet "otvet.txt"
 
void main(void)
{
system("cls");
FILE *a, *b, *c, *d;
char m[4][30], stroka[3];
char h[30],f[30],g[30];
int i,j,kol,n;
 
if((a=fopen(file_imya,"r"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_imya);
 
if((b=fopen(file_prazd,"r"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_prazd);
 
if((c=fopen(file_pozdr,"r"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_pozdr);
 
if((d=fopen(file_otvet,"w"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_otvet);                                        
                                                                                                  
for(i=0; fscanf(a,"%c",&h[i])!= EOF; i++)
    printf("%c",h[i]);
    
printf("Vvedite familiu\n");
scanf("%c",&m[0][j]);
 
 
for(i=0; fscanf(b,"%c",&f[i])!= EOF; i++)
    printf("%c",f[i]);
 
printf("Vvedite prazdnik\n");
scanf("%c",&m[1][j]);
 
 
for(i=0; fscanf(c,"%c",&g[i])!= EOF; i++)
    printf("%c",g[i]);
 
printf("Vvedite pozdravlenie\n");
scanf("%c",&m[2][j]);
 
 
kol=3;
for(i=0;i<kol;i++){
    fprintf(d,"%c","\n");
    for(j=0;j<n;j++)
        fprintf(d,"%c",m[i][j]);}
 
printf("Rasultat zapisan v faile otvet.txt\n");
 
fclose(a);
fclose(b);
fclose(c);
fclose(d);
getch();    
    return 0;
}
помогите, пожалуйста

 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2011, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить (C++):

Не знаю как исправить ошыбку в коде - C++
Выбивает вот-это error C2679: бинарный &quot;=&quot;: не найден оператор, принимающий правый операнд типа &quot;flower (__cdecl *)(void)&quot; (или приемлемое...

Не знаю как исправить ошыбку в коде - C++
Ошыбка, наверное, в том что я в классе roslunu описываю ф-ию get_name, где пам'ять под name выделена динамически, а в следующих классах...

Не знаю как переделать лабу, есть пример - C++
Есть готовая лаба, нужно переделать под другой вариан Помогите, пожалуйста..... Порядок выполнения работы. 1. Выбрать класс АТД в...

Класс string " ошибки, не знаю как исправить - C++
компилятор ругает &quot;{&quot; в конструкторах, что нужно поправить или как заменить эти конструкторы? мой код: TPString.h #ifndef TPSTR_H ...

нужно найти ошибки в задаче на языке C/ их в районе 10 как выдает компилятор но я не могу их исправить (не знаю как) - C++
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; void main() { int xa, ya, xb, yb; cprintf(&quot;vvod xa, ya, xb, yb&quot;); ...

Как исправить ошибки в коде - C++
Не могу понять что не так. Помогите пожалуйста. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using namespace std; ...

31
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
09.07.2011, 19:59 #2
Скинь сюда текстовые файлы, не самому же мне их кропать!
0
insolent
09.07.2011, 21:40
  #3

Не по теме:

_Elena_, вы бы определились на чем вы пишите: на С или на С++

0
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
10.07.2011, 10:45  [ТС] #4
я пишу на СИ, вот файлы:

imena.txt

pozdr.txt

prazd.txt

otvet.txt

просто я не отформатировала код, и модератор отметил его как СИ++.
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
10.07.2011, 11:53 #5
По пунктам мне разъясни это
C++
1
2
printf("Vvedite familiu\n");
scanf("%c",&m[0][j]);
0
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
10.07.2011, 11:58  [ТС] #6
это программа выводит сообщение на экран с просьбой ввести фамилию, а строка ниже сохраняет введенные данные в двумерный массив, который потом печатается в файл
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
10.07.2011, 12:00 #7
Ну ты хоть отдаёшь себе отчёт, что у тебя j неинициализировано, и, следовательно, может быть равно чему угодно? Вот тебе и ошибка памяти.
0
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
10.07.2011, 12:01  [ТС] #8
а как его надо было инициализировать? нельзя просто int j?
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
10.07.2011, 12:03 #9
C
1
2
printf("Vvedite familiu\n");
scanf("%c",&m[0][j]);
Интересно конечно, как это вы вводите фамилию, в один символ..

Может так хотя бы?

C
1
2
printf("Vvedite familiu\n");
scanf("%s",&m[0])
0
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
10.07.2011, 12:04  [ТС] #10
у меня так и было, все равно выводил ошибку
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
10.07.2011, 12:06 #11
Ни в коем случае. Как и всякую другую переменую
C++
1
int j= 0;
(если тебе нужен 0), исправляй. Тоже относится и ко всем другим переменным, значения которых важны.
1
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
10.07.2011, 13:16  [ТС] #12
я исправила код, все работает, только в файл ответ выводит несколько букв М и только потом то, что надо. как сделать так, чтобы этих букв не было?
otvet.txt

остальные измененные файлы
imena.txt
pozdr.txt
prazd.txt

вот код:

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
64
65
66
67
68
69
70
71
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <string.h>
 
#define  file_imya "imena.txt"
#define  file_prazd "prazd.txt"
#define  file_pozdr "pozdr.txt"
#define  file_otvet "otvet.txt"
 
int _tmain(int argc, _TCHAR* argv[])
{
system("cls");
FILE *a, *b, *c, *d;
char m[4][30];
char h[30],f[30],g[30];
int i,j=0,kol;
 
if((a=fopen(file_imya,"r"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_imya);
 
if((b=fopen(file_prazd,"r"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_prazd);
 
if((c=fopen(file_pozdr,"r"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_pozdr);
 
if((d=fopen(file_otvet,"w"))==NULL) 
    printf("Oshibka pri otkrytii faila %c.\n",file_otvet);                                        
                                                                                                  
for(i=0; fscanf(a,"%c",&h[i])!= EOF; i++)
    printf("%c",h[i]);
    
printf("_Vvedite familiu\n");
for(j=0;j<7;j++)
    scanf("%c",&m[0][j]);
 
 
for(i=0; fscanf(b,"%c",&f[i])!= EOF; i++)
    printf("%c",f[i]);
 
printf("_Vvedite prazdnik\n");
for(j=0;j<17;j++)
    scanf("%c",&m[1][j]);
 
 
for(i=0; fscanf(c,"%c",&g[i])!= EOF; i++)
    printf("%c",g[i]);
 
printf("_Vvedite pozdravlenie\n");
for(j=0;j<19;j++)
    scanf("%c",&m[2][j]);
 
 
kol=3;
for(i=0;i<kol;i++){
    fprintf(d,"%c","\n");
    for(j=0;j<19;j++)
        fprintf(d,"%c",m[i][j]);}
 
printf("Resultat zapisan v faile otvet.txt\n");
 
fclose(a);
fclose(b);
fclose(c);
fclose(d);
getch();    
    return 0;
}
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
10.07.2011, 13:31 #13
C++
1
fprintf(d,"%c","\n");

Это чего, а?
0
_Elena_
0 / 0 / 0
Регистрация: 09.07.2011
Сообщений: 11
10.07.2011, 13:34  [ТС] #14
по идее это цикл для i, чтобы печатал в столбик, это очень большой косяк?)
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
10.07.2011, 13:53 #15
А, так ты это в файл вводишь просто первод на другую строку? Ну тогда ладно

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Смотри:
C++
1
2
 for(j=0;j<19;j++)
  fprintf(d,"%",m[i][j]);
Смотри, ты вводишь в файл имя, праздник и поздравление. Теперь: имя у тебя занимает семь символов, а ты вводишь 19, праздник занимает 17 символов, а ты снова вводишь 19
И только поздравление у тебя занимает 19 символов и ты 19 и вводишь

Понимаешь, ты у тебя заполнено в имени семь сиволов, а ты 19 из семи пихаешь, а оставшиеся машине где взять? Вот она и берёт где ни попадя, а в них мусор.

И вот так пиши:
fprintf(d,"%c",m[i][j]);

Ты в колнце концов символы выводишь в файл, а не что-нибудь
0
10.07.2011, 13:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2011, 13:53
Привет! Вот еще темы с ответами:

подскажите как исправить ошибки в коде C++(oop) - C++
Программа реализует класс &quot;треугольник&quot; и всевозможные методы для него помогите исправить ошибки lb_1_oop_sam.h #ifndef...

Исправить ошибки в коде или пояснить как правильно запустить - C++
Добрый вечер,нужна помощь есть текст программы написанный в 2010 с++ ,немогу запустить в 2013,выдает ошибку что неправильная...

Найти ошибки в коде и исправить эти ошибки (Наследование) - C++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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