EXL Решение
void ScriptWidget::onSaveButtonClick()
{
    QFile updateScriptFile("update-script");
    if (!updateScriptFile.open(QFile::WriteOnly | QFile::Text)) {
        QMessageBox::critical(this, tr("I/O Error"), tr("Error opening file %1\n"
                                                        "Error: %2")
                              .arg(updateScriptFile.fileName())
                              .arg(updateScriptFile.errorString()));
        return;
    }

    QTextStream out(&updateScriptFile);
    out << ui->textEdit->toPlainText(); // Get text from the QTextEdit Widget
    updateScriptFile.close();
    emit signalSendMessageToStatusBar(QString(tr("File Saved.")));
}


Я так записываю, вроде все работает.
Используй документацию и Assistant.
EXL Решение
1. Бланшет, Саммерфилд - Qt4 Программирование GUI на С++. 2ed. - 2008
2. Шлее Макс - Профессиональное программирование на C++. +CD. Qt 4.8. (В подлиннике) - 2012
3. Марк Саммерфилд - Qt Профессиональное программирование (High tech) - 2011
4. Андрей Боровский - Qt4.7+. Практическое программирование на C++ - 2012
5. Юрий Земсков - Qt4 на примерах

Первая книга от создателей Qt, в первых главах рассмотрено создание приложения для работы с таблицами (этакий мини Excel). Так что в прямом смысле за день можно разобраться во всех тонкостях создания подобных приложений.
Вторая книга от известного в Qt-сообществе программиста, очень подробный и толстый справочник по виджетам, их описание и примеры использования. Однозначный Must Have.
Третья книга от одного из программистов, разрабатывающих Qt. В ней рассказано о профессиональной разработке приложений. В чем-то является продолжением первой книги.
Четвертая книга от отечественного программиста, рассмотрены в основном принципы разработки сложных приложений. Отдельный разделы посвящены программированию трехмерной и интерактивной графики, баз данных, многопоточных приложений и созданию собственных виджетов.
Пятая книга на мой взгляд уже устарела. Её вполне заменяет Макс Шлее.

Это все книги по Qt 4.X.X на русском языке, известные мне (не считая редакций). Если кто-то знает ещё, пожалуйста отпишитесь.

По Qt 5 книг пока нету. Мак Шлее сказал, что начнет работу над новой книгой с выхода версии Qt 5.2. Но не стоит забывать, что у Qt документация одна из самых лучших и вполне способна заменить книгу. Поэтому настоятельно рекомендую пользоваться Qt Assistant при возникновении затруднений.

По C++ рекомендую конечно классику:
Прата С. - Язык программирования С++. Лекции и упражнения - 2011
EXL
Может кто-нибудь направить на путь истинный?

Наставляю: воспользуйтесь Qt и забудьте про чудовищный WinApi.
nm9KbJq.png

Код "main.cpp":
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <algorithm>

class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget() {
        gridLayout = new QGridLayout(this);
        labelString = new QLabel(tr("String:"));
        labelRevertString = new QLabel(tr("Revert string:"));

        lineEdit[0] = new QLineEdit();
        lineEdit[1] = new QLineEdit();

        gridLayout->addWidget(labelString, 0, 0);
        gridLayout->addWidget(labelRevertString, 0, 1);
        gridLayout->addWidget(lineEdit[0], 1, 0);
        gridLayout->addWidget(lineEdit[1], 1, 1);

        connect(lineEdit[0], SIGNAL(textEdited(QString)),
                this, SLOT(slotTextChanged(QString)));
        connect(lineEdit[1], SIGNAL(textEdited(QString)),
                this, SLOT(slotTextChanged(QString)));
    }
    virtual ~Widget() {}

private:
    QGridLayout *gridLayout;
    QLabel *labelString;
    QLabel *labelRevertString;
    QLineEdit *lineEdit[2];

private slots:
    void slotTextChanged(QString aString) {
        std::reverse(aString.begin(), aString.end());
        lineEdit[lineEdit[0]->hasFocus()]->setText(aString);
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget widget;
    widget.setFixedSize(widget.sizeHint());
    widget.show();
    return a.exec();
}

#include "moc_main.cpp"


Скачать исполнительный файл
EXL
Все программы, использующие SDL или Qt. Например:
Qt Creator
PPSSPP
Otter Browser (аналог браузера Opera 12)
Clementine
CoolReader3
qBittorrent

Если ресурсы позволяют в список можно добавить Firefox и Thunderbird.
EXL Решение
Я за MinGW, хотя бы потому, что он использует собственный Runtime, работающий на ВСЕХ MS Windows OS, начиная с Win95. В случае с Qt - начиная с 2000/XP. Без всяких установок Visual C++ Redistributable/Visual C++ Runtime и дополнительных библиотек. Просто добавляем в проектный файл такие строки: QMAKE_LFLAGS +=-static-libgcc -static-libstdc++
EXL
Посоветую кросс-платформенный SDL, и его расширение - SDL_mixer.
EXL
Вам прямо курс лекций?
Возможно, это то, что вы ищете:
www.lektorium.tv/course/22825
www.lektorium.tv/course/22858
EXL
Попробуйте привести строки к одной общей кодировке, а затем сравнить. Для этого можно воспользоваться библиотекой libiconv:

main.cpp:
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

#include <iconv.h>

string iconv_recode(const string from, const string to, string text)
{
    iconv_t cnv = iconv_open(to.c_str(), from.c_str());

    if (cnv == (iconv_t) - 1) {
        iconv_close(cnv);
        return "";
    }

    char *outbuf;
    if ((outbuf = (char *) malloc(text.length()*2 + 1)) == NULL) {
        iconv_close(cnv);
        return "";
    }

    char *ip = (char *) text.c_str(), *op = outbuf;
    size_t icount = text.length(), ocount = text.length()*2;

    if (iconv(cnv, &ip, &icount, &op, &ocount) != (size_t) - 1) {
        outbuf[text.length()*2 - ocount] = '\0';
        text = outbuf;
    } else {
        text = "";
    }

    free(outbuf);
    iconv_close(cnv);

    return text;
}

void compare_strings(const string &aString1, const string &aString2) {

    cout << "String 1: " << aString1 << endl
         << "String 2: " << aString2 << endl;

    if (aString1 == aString2) {
        cout << "Identical strings!" << endl
             << "-----" << endl;
    } else {
        cout << "Different strings!" << endl
             << "-----" << endl;
    }
}

int main()
{
    ifstream file_1("word_1.txt");  // The "Proverka" Word in UTF-8
    ifstream file_2("word_2.txt");  // The "Proverka" Word in CP1251
    string word_1, word_2;

    file_1 >> word_1;
    file_2 >> word_2;

    compare_strings(word_1, word_2);

    word_2 = iconv_recode("CP1251", "UTF-8", word_2);

    compare_strings(word_1, word_2);

    return 0;
}


exl@exl-Lenovo-G560e:~/SandBox/text_enc > enca -L russian  word_1.txt 
Universal transformation format 8 bits; UTF-8
  Doubly-encoded to UTF-8 from ISO-8859-5
exl@exl-Lenovo-G560e:~/SandBox/text_enc > enca -L russian  word_2.txt 
MS-Windows code page 1251
  LF line terminators
exl@exl-Lenovo-G560e:~/SandBox/text_enc > cat word_1.txt 
Проверка 
exl@exl-Lenovo-G560e:~/SandBox/text_enc > cat word_2.txt 
��������
exl@exl-Lenovo-G560e:~/SandBox/text_enc > ./text_coding 
String 1: Проверка
String 2: ��������
Different strings!
-----
String 1: Проверка
String 2: Проверка
Identical strings!
-----
EXL Решение
Вы неправильно рисуете. Попробуйте так:

qpaintwidget.cpp:
#include "qpaintwidget.h"

#include <QPainter>
#include <QDebug>

QPaintWidget::QPaintWidget(QWidget *parent)
    : QWidget(parent)
{
    offset = 0;
    resize(800, 600);

    paintTimer = new QTimer(this);
    paintTimer->start(10);
    connect(paintTimer, SIGNAL(timeout()), this, SLOT(updatePixmap()));
}

void QPaintWidget::paintEvent(QPaintEvent *)
{
    QColor whitebrush = Qt::white;
    QColor blackbrush = Qt::black;
    QColor redbrush = Qt::darkRed;
    QPainterPath path;
    QPainter painter(this); // Создаём новый объект рисовальщика
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(Qt::NoPen);
    painter.translate(1 + offset, 0);
    painter.setBrush(whitebrush);
    painter.drawRect(0, 0, width(), height());
    QPoint triangle[3] = {
        QPoint(180, 450),
        QPoint(220, 450),
        QPoint(200, 555),
    };
    painter.setBrush(blackbrush);
    painter.drawEllipse(10, 15, 380, 380);
    painter.setBrush(redbrush);
    painter.drawEllipse(35, 8, 330, 330);
    painter.setBrush(whitebrush);
    painter.drawEllipse(50, -5, 300, 330);
    painter.setBrush(blackbrush);
    painter.drawPolygon(triangle, 3);
    path.setFillRule(Qt::WindingFill);
    path.addRect(180, 250, 40, 200);
    path.addRect(150, 250, 100, 20);
    painter.drawPath(path);
    painter.setBrush(whitebrush);
    painter.drawEllipse(120, 260, 60, 20);
    painter.drawEllipse(220, 260, 60, 20);
}

void QPaintWidget::updatePixmap()
{
    (offset >= 810) ? offset = 0 : offset+=5;
    qDebug() << offset;
    repaint();
}

QPaintWidget::~QPaintWidget()
{

}


qpaintwidget.h:
#ifndef QPAINTWIDGET_H
#define QPAINTWIDGET_H

#include <QWidget>
#include <QTimer>

class QPaintWidget : public QWidget
{
    Q_OBJECT

    int offset;
    QTimer *paintTimer;
protected:
    void paintEvent(QPaintEvent *);
private slots:
    void updatePixmap();
public:
    QPaintWidget(QWidget *parent = 0);
    ~QPaintWidget();
};

#endif // QPAINTWIDGET_H


И несколько советов:
1. Во-первых, никогда не используйте sleep() или Sleep() (в Windows) в программах на Qt. Так как при вызове этой функции замораживается основной thread, в котором как раз и происходит рендеринг GUI. Отсюда тормоза программы и пр.

2. Никогда не начинайте названия своих классов с буквы Q или q, так как тогда их легко спутать с теми классами, которые входят в библиотеку. Если вам так нужен префикс в имени класса, используйте заглавную C (Class), т. е. ваш класс должен иметь название CPaintWidget или просто PaintWidget.
EXL
Qt 4.8.5 собранный статически;
MinGW 4.4+;
upx.

Вся эта связка поможет вам собрать полностью абстрагированное от внешних библиотек приложение в одном exe-файле, размером ~3-5 MB. Запускаться которое будет везде (от XP до 8, x32, x64) и даже в Wine. + Можно будет перекомпилировать приложение под GNU/Linux и MacOS и оно будет выглядеть там нативно.

Если что, пишите мне на почту (контакты в профиле), я поделюсь с вами статически собранным Qt'ом (на официальном сайте используется версия с динамическими библиотеками) + расскажу и покажу, как сделать подобное приложение. Фреймворк Qt вам понравится, это точно! ^_^
EXL Решение
Во-первых, компилятор всегда указывает на ошибки и неоднозначности.
Во-вторых, не запуск с отладкой, а компиляция с отладочными символами.
В режиме отладки в собранный исполнительный бинарник добавляются специальные символы, позволяющие посмотреть, в какой функции программа завершилась аварийно. Отладочный бинарник позволяет пройти по стеку вызовов функций, выполнить каждую инструкцию процессора или C/C++-строчку по-порядку. Поставить брекпойнт и.т.д.
Подробнее тут
EXL Решение
Любой хексовый редактор поможет вам увидеть изображение так, как оно представлено в памяти компьютера.
хочу по программировать на машинном коде

Никто не программирует "на машинном коде". Максимум - патчи. Машинный код разделяют на данные и, непосредственно код, который дизассемблируют (переводят на более высокий уровень абстракции).
EXL
Флешка какого производителя? Если китайский ноунейм - ее можно смело выбрасывать, проблем с ней вы поимеете много.
Насчет восстановления - вряд ли оно предоставляется возможным. Нужно анализировать файл, смотреть, что в нем битое. Если только заголовок - попытаться восстановить можно, однако, если видеоданные побиты, то ничего не поправишь.
EXL Решение
MY_HEADER_PATH := ../src/headers

LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include \
				$(LOCAL_PATH)/$(SDL_IMAGE_PATH)/ \
				$(LOCAL_PATH)/$(SDL_MIXER_PATH)/ \
				$(LOCAL_PATH)/$(SDL_TTF_PATH)/ \
                                $(LOCAL_PATH)/$(MY_HEADER_PATH)/


После этого файлы хэдеры из директории "../src/headers" должны увидеться нормально.
Но почитай внимательно документацию по Android NDK, в частности там может быть переменная LOCAL_CХХ_INCLUDES := или LOCAL_CPP_INCLUDES :=
EXL Решение
#!/bin/bash
OLDIFS=$IFS
string=$1
IFS='.'
string_array=($string)
len=$(( ${#string_array[@]} - 1 ))
IFS=$OLDIFS
echo ${string_array[$len]}


exl@exl-Lenovo-G560e:~/SandBox > ./token.sh ..log.f
f
exl@exl-Lenovo-G560e:~/SandBox > ./token.sh .log.ccc
ccc
exl@exl-Lenovo-G560e:~/SandBox > ./token.sh log.qwerty
qwerty
EXL
Есть такой шуточный проект-дистрибутив, - RebeccaBlackOS, который создан специально для того, чтобы можно было удовлетворить любопытство и потрогать Wayland/Weston. Представляет собой LiveCD, который можно запустить через виртуалку. Одна из последних версий датируется 2014-02-24. Еще есть мартовская версия 2014-03-01, правда, каталог, в котором она лежит почему-то датируется 2013-ым годом, хотя образы - 2014-ым.

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

Как сейчас обстоит ситуация - не знаю. Если будете пробовать - обязательно отпишитесь о работоспособности.

Кстати, есть ещё Maui project с DE, написанным на Qt5, тоже использует Wayland/Weston. Правда, попробовать этот дистрибутив мне так пока и не довелось. Удачи!
EXL
А phonon не рассматривали?
EXL
У Python'а и у PHP порог вхождения гораздо, гораздо ниже, чем у C!
Веб-программисту язык C вообще не нужен, и в своей работе веб-программист с ним никак не соприкасается. Учите лучше то, что сейчас в тренде, так быстрее наберетесь опыта.
А по веб-языкам, в частности по PHP, могу посоветовать такую вот книжку.

Для вас первым языком, раз уж вы выбрали профессию веб-программиста, отлично подойдет Python; но никак не C, на который вы точно убьете много времени и сил.
EXL Решение
1. В цикле for нету разницы между постфиксной или префиксной формы декремента/инкремента для переменной-счетчика.

2. Первый проход цикла осуществляется с начальным значением i. Потом переменная-счетчик изменяется и второй проход цикла уже будет со значением i1 и т.д.

3. В вашем случае всё было сделано правильно:

exl@exl-Lenovo-G560e:~/SandBox > cat test.cpp 
#include <iostream>

int main() {
    int f = 15;
    for(int i = --f; i > 0; --i)
        std::cout << i << " ";
    std::cout << std::endl;
    return 0;
}

exl@exl-Lenovo-G560e:~/SandBox > g++ test.cpp
exl@exl-Lenovo-G560e:~/SandBox > ./a.out 
14 13 12 11 10 9 8 7 6 5 4 3 2 1


Заметьте, что для значения, которым мы будем инициализировать переменную-счетчик, разница в декременте/инкременте есть:

exl@exl-Lenovo-G560e:~/SandBox > cat test.cpp 
#include <iostream>

int main() {
    int f = 15;
    for(int i = f--; i > 0; --i)
        std::cout << i << " ";
    std::cout << std::endl;
    return 0;
}
exl@exl-Lenovo-G560e:~/SandBox > g++ test.cpp 
exl@exl-Lenovo-G560e:~/SandBox > ./a.out 
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
EXL
Классика - Зубков С.В. - Assembler для DOS, Windows и UNIX