Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
1

Собранное приложение завершается с ошибкой

21.05.2013, 15:58. Просмотров 1766. Ответов 26
Метки нет (Все метки)

Здравствуйте. Подскажите пожалуйста новичку. Взял приложение из учебника, переписал в Visual Studio, собрал, а оно выкидывает. Приложение делает следующее:

1. Берет текст из файла unform.txt
2. Форматирует каждую строку по ширине
3. Выводит результат в файл formatd.txt
4. Подсчитывает количество слов в тексте и выводит на экран

Проблема: если исходный файл имеет кодировку unicode, то текст не форматирует и не записывает в файл. Количество слов тоже не считает. Если исходный файл имеет любую другую кодировку (ANSI или UTF), то выкидывает при чтении из файла. Запускаю отладку в Visual Studio - запускается и завершается с кодом 0. То есть не выкидывает. Но форматированный текст не появляется в выходном файле. А запускаю из консоли - выкидывает.
Помогите разобраться. Исходники в приложенном файле. Пишу в Visual Studio 2010 Express.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2013, 15:58
Ответы с готовыми решениями:

Программа завершается с ошибкой Killed
Программа завершается с ошибкой Killed, когда я выделяю очень много динамической памяти, но меньше...

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

Не прогружаются каскады haarcascade_frontalface_alt.xml в Visual Studio 2010. OpenCV. Завершается с ошибкой 1
Все форумы перечитала, много вариантов испробовала, но результата никакого. Подскажите кто...

Программа аварийно завершается с ошибкой "map/set iterators are incompatible"
Добрый день! Проблема такая: в s1 и s2 рандомно добавляю числа, хочу найти объединение этих...

26
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
21.05.2013, 16:02 2
niks255, а код можно?
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2013, 16:02 3
Цитата Сообщение от niks255 Посмотреть сообщение
Исходники в приложенном файле.
И где он?
0
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
21.05.2013, 16:18  [ТС] 4
Цитата Сообщение от alsav22 Посмотреть сообщение
И где он?
Странно, вроде загрузил файл... щас повторю.
Вот, держите.
0
Вложения
Тип файла: 7z Task 7.7.7z (1.51 Мб, 5 просмотров)
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2013, 16:59 5
Эта функция, что должна вернуть?
C++
1
int SearchNextWord(const char*, const int);
Добавлено через 4 минуты
Цитата Сообщение от niks255 Посмотреть сообщение
2. Форматирует каждую строку по ширине
Каким образом?

Добавлено через 1 минуту
Не знаю, правильно ли работает, но если дописать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int SearchNextWord(const char* pline, const int curpos)
 
{
    int i = curpos;
    while(pline[i] != ' ')
    {
        if (pline[i] == '\n')
        return 0;
    }
    while (pline[i] == ' ' && pline[i+1] == ' ') i++;
    return i;
}
то вылетов нет.
1
Миниатюры
Собранное приложение завершается с ошибкой  
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
21.05.2013, 17:07  [ТС] 6
Функция должна возвращать номер позиции, с которой начинается следующее слово в строке pline. А если достигнут конец строки, то 0. curpos - позиция с которой начинается поиск.
Форматировать должна выравнивая текст слева и справа путем добавления пробелов между соседними словами. А еще в отступе с левой стороны страницы на margin позиций. Результирующий текст должен находиться в позициях margin+1 ... margin+max_line.
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2013, 17:12 7
Вылет был из-за того, что возврата не было, о чём студия предупреждала (что возврат ни при всех путях выполнения).
1
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
21.05.2013, 17:15  [ТС] 8
Вроде разобрался. Функция int SearchNextWord должна вот так выглядеть:

int SearchNextWord(const char* pline, const int curpos)

C++
1
2
3
4
5
6
7
8
9
10
{
    int i = curpos;
    while(pline[i] != ' '){
        if (pline[i] == '\n') return 0;
        i++;
    }
    while (pline[i] == ' ' && pline[i+1] == ' ') i++;
    return i+1;
 
}
Теперь другая проблема. Читает из входного файла только если он имеет кодировку ANSI. Можно сделать чтобы читал и юникод и UTF? Иначе вывод крокозябрами. Во входном файле русский текст.
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.05.2013, 17:28 9
Цитата Сообщение от niks255 Посмотреть сообщение
Можно сделать чтобы читал и юникод и UTF?
Вот, есть такой код. Разбирайтесь:
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
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
    setlocale(0, ".1251"); //включили кодировку.
    //SetConsoleCP (1251); 
    //SetConsoleOutputCP (1251); // или так.
    
    char buff[500];
    wchar_t wbuff[500];
 
    ifstream f("upload.txt");
    
    f.getline(buff, 500); // в буффер char из файла UTF-8.
    
    MultiByteToWideChar(CP_UTF8, 0, buff, 500, wbuff, 500); //из буфера char в буфер wchar_t .
    wcout.imbue(locale("rus_rus.866")); //включаем другую кодировку.
    //setlocale(0, "rus_rus.866"); // или так.
    wcout << wbuff << endl; // выводим содержимое буфера wchar_t
    
    setlocale(0, ".1251"); // вернули кодировку.
    
    system("pause");
    return 0;
}
1
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
21.05.2013, 17:36  [ТС] 10
Всем спасибо, тему можно закрывать
0
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
24.05.2013, 14:09  [ТС] 11
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот, есть такой код. Разбирайтесь:
Что то не могу с этим кодом прошарить. Помогите знающие, хоть пендалем в нужное направление подтолкните.

Добавлено через 20 часов 41 минуту
Народ ну подскажите пожалуйста с тем кодом. Я его в отдельном проекте собрал и он не выводит на экран содержимое буфера. Написано только "Для продолжения нажмите любую клавишу".
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2013, 16:34 12
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
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
    setlocale(0, ".1251"); //включили кодировку.
    
    char buff_utf8[500];
    char buff_ansi[500];
    wchar_t wbuff[500];
 
    ifstream futf_8("UTF_8.txt");
    ifstream fansi("ANSI.txt");
 
    fansi.getline(buff_ansi, 500);
    cout << "buff_ansi: " << buff_ansi << endl;
    
    futf_8.getline(buff_utf8, 500); // в буффер char из файла UTF-8.
    cout << "buff: " << buff_utf8 << endl;
    
    MultiByteToWideChar(CP_UTF8, 0, buff_utf8, 500, wbuff, 500); //из буфера char в буфер wchar_t .
    setlocale(0, "rus_rus.866"); // //включаем другую кодировку 
    wcout << "wbuff: " << wbuff << endl; // выводим содержимое буфера wchar_t
    cout << "buff_ansi: " << buff_ansi << endl;
    
    setlocale(0, ".1251"); // вернули кодировку.
    cout << endl;
    wcout << "wbuff: " << wbuff << endl; // выводим содержимое буфера wchar_t
    cout << "buff_ansi: " << buff_ansi << endl;
    
    system("pause");
    return 0;
}
0
Миниатюры
Собранное приложение завершается с ошибкой  
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2013, 16:36 13
И так у меня работает:
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
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
    setlocale(0, ".1251"); //включили кодировку.
    
    char buff_utf8[500];
    char buff_ansi[500];
    wchar_t wbuff[500];
 
    ifstream futf_8("UTF_8.txt");
    ifstream fansi("ANSI.txt");
 
    fansi.getline(buff_ansi, 500);
    cout << "buff_ansi: " << buff_ansi << endl;
    
    futf_8.getline(buff_utf8, 500); // в буффер char из файла UTF-8.
    cout << "buff: " << buff_utf8 << endl;
    
    MultiByteToWideChar(CP_UTF8, 0, buff_utf8, 500, wbuff, 500); //из буфера char в буфер wchar_t .
    //setlocale(0, "rus_rus.866"); // //включаем другую кодировку 
    wcout << "wbuff: " << wbuff << endl; // выводим содержимое буфера wchar_t
    cout << "buff_ansi: " << buff_ansi << endl;
    
    system("pause");
    return 0;
}
1
Миниатюры
Собранное приложение завершается с ошибкой  
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
24.05.2013, 16:38  [ТС] 14
alsav22,
Что то я на вашем скриншоте работы не вижу, она у вас крокозябры выводит
0
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2013, 17:44 15
Цитата Сообщение от niks255 Посмотреть сообщение
alsav22,
Что то я на вашем скриншоте работы не вижу, она у вас крокозябры выводит
С кодом разберитесь, потом пишите. Кракозябры специально для вас сделаны, чтобы было видно, что выводится из файла до обработки, а что после.
1
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
24.05.2013, 17:53  [ТС] 16
Цитата Сообщение от alsav22 Посмотреть сообщение
С кодом разберитесь, потом пишите. Кракозябры специально для вас сделаны, чтобы было видно, что выводится из файла до обработки, а что после.
ОК, беру ваш код, вставляю в проект, компилирую, создаю блокнотом файл с именем "UTF_8.txt" и кладу в папку со скомпилированным exe'шником. Запускаю его и вижу:
0
Миниатюры
Собранное приложение завершается с ошибкой  
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2013, 18:18 17
Попробуйте с этим файлом.
1
Вложения
Тип файла: txt UTF_8.txt (27 байт, 5 просмотров)
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
24.05.2013, 18:19  [ТС] 18
alsav22, А с вашим нормально. Что я делаю не так?
Вот мой файл
0
Вложения
Тип файла: txt UTF_8.txt (103 байт, 3 просмотров)
5473 / 4868 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2013, 18:28 19
Мой файл не блокнотом делался. Есть у вас ещё какие-нибудь программы, где можно текстовый файл в UTF-8 сделать?
1
1 / 1 / 0
Регистрация: 21.05.2013
Сообщений: 29
24.05.2013, 18:30  [ТС] 20
Цитата Сообщение от alsav22 Посмотреть сообщение
Мой файл не блокнотом делался. Есть у вас ещё какие-нибудь программы, где можно текстовый файл в UTF-8 сделать?
Найду, только почему он блокнотовские не жует?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2013, 18:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывести фамилию сборщика и общее количество деталей, собранное им за неделю
а)Создать файл , содержащий сведения о количестве изделий , собранных сборщиками цеха за неделю....

GetMailslotInfo завершается с ошибкой
Здравствуйте! Продолжаю осваивать работу с почтовыми ящиками в Windows. Не знаю, может быть стоило...

Выборка из БД по ID завершается с ошибкой
Появилась след проблема: есть таблица в БД назовем ее USER, в неи первичный ключ - CODE(varchar)....

Запрос GET idHTTP завершается c ошибкой
Здравствуйте! Делаю программный доступ к интернет-ресурсу в С++ Builder 2009 c использованием...


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

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

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