Ошибка при выполнении программы

255
15 декабря 2016, 16:10

Учу Си по книге Стивена Прата "С. Лекции и Упражнения. 5-е издание".
Так вот, выполняю упражнение для повторения.

Сама задача:

Напишите программу, которая использует вызов функции printf() для печати вашего имени и фамилии в одной строке, использует второй вызов функции printf(), чтобы напечатать ваше имя и фамилию в двух строках, и использует два вызова функции printf() для печати вашего имени и фамилии в одной строке. Выходные данные должны иметь следующий вид (при этом используются ваши персональные данные ): Иван Иванов

Answer 1

Переменные name и name2 у вас декларированы как char, а вы читаете строку - то есть выходите за границу аллоцированного под name/name2 пространства - наказание за это неотвратимо :)

Answer 2

Проблема в данный момент лежит глубже.

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

А затем стоит прочесть описания форматов в man 3 scanf и man 3 printf.

Обновление

Не нравится 30, сделайте 1000. А вот причем здесь тысячи имен?

Ведь новые имена будут попадать в те же переменные, затирая старые.

Если же Вам потребуется хранить их все, то в копии можно хранить ровно столько байт (ну, плюс еще немного для "служебной информации"), сколько занимает конкретное имя (сейчас пока не буду описывать как именно это можно делать).

А может Вам лучше что-то другое почитать? Например, http://ermak.cs.nstu.ru/cprog/HTML/index.htm

READ ALSO
Как сложить две строки?

Как сложить две строки?

Необработанное исключение в "0x003fd2e9 (msvcr100ddll)" в "test1

349
Перенос текста из одного ListBox в другой

Перенос текста из одного ListBox в другой

Прошу, подскажите, мне нужно перенести весь текст элемента ListBox в другойЭтот код переносит почему-то только часть текста:

256
Узнать заряд батареи на Android

Узнать заряд батареи на Android

Задача очень распространенная, но не могу найти реализации на QT 5x

262