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

Не могу понять в чем ошибка

18.06.2016, 15:30. Показов 1389. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано задание: "Имеется текстовый файл. Игнорируя исходное деление этого файла на строки, переформатировать его, разбивая на строки так, чтобы каждая строка оканчивалась точкой, либо содержала 60 литер, если среди них нет точки."
Программа свою функцию выполняет, но вот в конце файла, она выдает лишние символы, типа: "я" или "@"... А вот с чем это связанно, не знаю...
Тестовые данные:
Считывает: "asdfasd.fasdfa"
Выдает:
"asdfasd.
fasdfaя@."

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
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
int cinchar(FILE *fl){
char a, cnt;
while (!feof){
    a = fgetc(fl);
    if (a == '.'){cnt += 2;}
    cnt++;}
return cnt;
}
 
void association (FILE *f1, FILE *f2) {
 
int cc = cinchar(f1);
const int d = 60;
int cnt, i = 0;
char ch;
char s[cc];
 
rewind(f1);
 
while (!feof(f1)){
    s[i] = fgetc(f1);
    if (s[i] == '.'){
        s[i + 1] = ' ';
        i += 2;
        continue;}
    else if (s[i] == '\n'){
        s[i] = fgetc(f1);}
    i++;}
i = 0;
 
while (s[i] != '\0'){
    if (s[i] == '.'){
         s[i + 1] = '\n';
         cnt = 0;}
    else if (cnt == d){
         s[i] = '\n';
         cnt = 0;}
    fprintf (f2, "%c",s[i]);
    i++;
    cnt++;}
s[i] = '.';
fprintf (f2, "%c",s[i]);
}
 
int main(){
setlocale(LC_ALL, "RUS");
char fname1[20], fname2[20];
 
printf("Введите имя файла с расширением: ");
scanf("%s", fname1);
printf("Введите имя файла результата с расширением: ");
scanf("%s", fname2);
 
FILE *f1, *f2;
 
f1 = fopen(fname1, "r");
f2 = fopen(fname2, "w");
 
association(f1, f2);
 
fclose(f1);
fclose(f2);
 
return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.06.2016, 15:30
Ответы с готовыми решениями:

не могу понять в чем ошибка
Задание: Найти наибольший элемент каждой пары из массива А и записать их в новый массив. Получить из него массив четных положительных...

Не могу понять в чём ошибка?
программа (работа с файлами) отрабатывает правильно, но в конце возникает ошибка. Не могу понять, что не так? Текст программы: ...

Не могу понять в чем ошибка?!
Задание: -Визначити кількість вузлів дерева, в яких є два нащадки. -функция добавления елемента -функцию удаления елемента -функцію...

4
Модератор
Эксперт С++
 Аватар для zss
13772 / 10965 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
18.06.2016, 16:14
Лучший ответ Сообщение было отмечено Blekzet как решение

Решение

Цитата Сообщение от Blekzet Посмотреть сообщение
while (!feof(f1)){ s[i] = fgetc(f1);
Замените на
C++
1
2
3
4
5
6
7
8
while (true)
{ 
    s[i] = fgetc(f1);
    if(feof(f1))
       break;
...
}
s[i]=0;// надо дописать терминальный ноль
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
18.06.2016, 16:38  [ТС]
А разве терминальный ноль это не '\0'?
0
Модератор
Эксперт С++
 Аватар для zss
13772 / 10965 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
18.06.2016, 16:58
Вы считаете, что число ноль и код '\0' чем-то отличаются?
Так это заблуждение!
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
18.06.2016, 17:15  [ТС]
Аааааа, ну спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2016, 17:15
Помогаю со студенческими работами здесь

Не могу понять в чем ошибка
Мне нужно сделать менюшку, в которую я записываю данный в бинарный файл, но после ввода имени, у меня выдает 2 cout'a и не могу ввести...

не могу понять в чем ошибка
Вот мое задание: Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Х до Х с шагом dx. Функция F: -ax^2...

Не могу понять, в чем ошибка
1 #include &lt;iostream&gt; 2 using namespace std; 3 int main (){ 4 setlocale (0, &quot;&quot;); 5 // Âûâîäèòñÿ ñîîáùåíèå 6 std::cout &lt;&lt; &quot;ß...

Не могу понять в чём ошибка
Циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима). Со сдвигом вправо...

не могу понять в чем ошибка.
Здравствуйте. Извините если подобные темы уже есть или это типичный вопрос но я их не нащел в поиске. Я недавно на С++ совсем и хотелось бы...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru