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

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

Войти
Регистрация
Восстановить пароль
 
 
dasha46
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 28
#1

Лишний символ при компиляции - C++

06.07.2013, 17:59. Просмотров 1022. Ответов 21
Метки нет (Все метки)

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
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <cstring>
#include <conio.h>
int zamena(char c);
using namespace std;
int zamena(char c)
{
    FILE *fin;
fin=fopen("5.txt", "r");
if (c=='0') printf("ноль"); else
if (c=='1') printf("один"); else
if (c=='2') printf("два"); else
if (c=='3') printf("три"); else
if (c=='4') printf("четыре"); else
if (c=='5') printf("пять"); else
if (c=='6') printf("шесть"); else
if (c=='7') printf("семь"); else
if (c=='8') printf("восемь"); else
if (c=='9') printf("девять"); else
if (c=='.') { printf(".\n"); fscanf(fin, "%c",&c); } else
if (c=='?') { printf("?\n"); fscanf(fin, "%c",&c); } else
if (c=='!') { printf("!\n"); fscanf(fin, "%c",&c); } else
printf ("%c", c);return 0;} 
 
int main() {
setlocale(LC_ALL,"Russian");
char c;
FILE *fin;
fin=fopen("5.txt", "r");
if (!fin) {cout<<"ошибка открытия файла "; }
 
 
{while (!feof(fin))
{
fscanf(fin, "%c",&c);
zamena(c);}
getch();
return 0; }}
Программа при компиляции повторяет последний символ, подскажите пожалуйста как это исправить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 17:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Лишний символ при компиляции (C++):

Лишний символ при работе со строками - C++
(объясните, пожалуйста откуда он берется и как от него избавиться) код: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...

Лишний символ в конце при выводе через fgetc - C++
Выводится лишний символ &quot;я&quot; в самом конце текста, как бы я не изменял содержимое текстового файла #include &quot;stdafx.h&quot; #include...

Исправить ошибку, при которой не работает cin после vector'a (лишний символ '\n' в потоке ввода) - C++
Столкнулся с этой проблемой в другой программе,но решил написать более примитивную и посмотреть, что будет. В итоге тоже самое после cin...

Контейнер map. Выводит лишний символ - C++
Вот код. Шифр простой замены. В конце выводит последний символ 2 раза подряд. #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;map&gt; ...

Произвольный доступ в файл. Лишний символ новой стоки - C++
Здравствуйте, помогите разобратся. #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main(){ ifstream...

Ошибка линковки файлов при компиляции: "fatal error LNK1169: обнаружен многократно определенный символ" - C++
Visual C++ 2008 Express Edition ошибка Компиляция... 1.cpp Компоновка... 2.obj : error LNK2005: &quot;int __cdecl GetByte(int)&quot;...

21
Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
06.07.2013, 19:23 #2
Можно увидеть содержимое файла?
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 19:34 #3
Если читаешь посимвольно, то удобней использовать цикл типа:
C++
1
2
3
4
5
for ( ; ; ) {
    int c = fgetc( fp );
    if ( c == EOF ) break;
    zamena( c );
}
Добавлено через 2 минуты
Я его называю циклом с mid-условием.

Добавлено через 1 минуту
Но можно и так:
C++
1
2
3
4
int c = fgetc( fp );
for ( ; c != EOF; c = fgetc( fp ) ) {
    zamena( c );
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
06.07.2013, 19:34 #4
dasha46,
Цитата Сообщение от dasha46 Посмотреть сообщение
while (!feof(fin))
{
fscanf(fin, "%c",&c);
if(!feof(fin)) //добавь
zamena(c);}
getch();
return 0; }
2
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 19:38 #5
dasha46, если ты не беспокоишься о чистоте, правильности и простоте кода, тогда, возможно, вариант от Юры тебе нужнее...
0
Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
06.07.2013, 19:40 #6
Цитата Сообщение от lazybiz Посмотреть сообщение
если ты не беспокоишься о чистоте, правильности
Тогда кучу if'ов лучше заменить на switch(c)
1
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 19:41 #7
Ezembi, ну тогда уж лучше кучу if заменить на map. Но ТС это не беспокоит, поэтому не надо самодеятельности.
0
-=ЮрА=-
Заблокирован
Автор FAQ
06.07.2013, 19:49 #8
lazybiz, как ты возьмёшь к примеру бинарку fgets- ом?
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 19:56 #9
-=ЮрА=-, а при чем тут fgets, Юрий ?
0
dasha46
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 28
06.07.2013, 20:00  [ТС] #10
Спасибо, заработало!))
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 20:01 #11
dasha46, заработало после чего? Что ты сделала? Ответ поможет тем кто будет интересоваться подобный вопросом..
0
dasha46
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 28
06.07.2013, 21:39  [ТС] #12
ответ -=ЮрА=-
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 21:57 #13
dasha46, а можно узнать, почему ты решила что ответ Юрия более подходящий? Он попросил тебя в личке поддержать его как человека!?
0
-=ЮрА=-
06.07.2013, 21:59
  #14

Не по теме:

dasha46, подожди минутку я сейчас успокою lazybiz, он явно просит овтета

0
dasha46
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 28
06.07.2013, 21:59  [ТС] #15
потому что после того, как я воспользовалась его советом, программа стала выполняться правильно, не повторяя последний символ
0
06.07.2013, 21:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 21:59
Привет! Вот еще темы с ответами:

Неправильно отображается текст (лишний текст при вводе точки) - C++
Привет всем, нид хел по коду С++. Все работает, но не правильно отображает текст ( лишний текст при вводе символа (точки) '.'...

Ошибки компиляции: "Неоднозначный символ". - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace System; using namespace std; class Double; ...

Ошибка памяти при выполнении, при компиляции не выводит ошибки - C++
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой строке и выводит их в обратном порядке....

Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы - C++
В VS скомпилировал код #include &lt;iostream&gt; using namespace std; int main() { int a; cout&lt;&lt;&quot;Hallo&quot;; cin&gt;&gt;a; cout&lt;&lt;a; ...


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

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

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