#c #graphics #console #printf #gets
#c #графика #консоль #printf #получает
Вопрос:
Я пишу библиотечную программу и хочу упорядочить данные о книгах в .txt-файле. Я хочу иметь возможность изменять название книги так, как я хочу, вместо того, чтобы переписывать название после его печати на экране.
char bookName[30] = "A Clockwork Orange";
printf("Edit Book Name --> %s", bookName);
gets(bookName);
Если я использую программу, которую я написал выше, это будет так:
Редактировать название книги -> _
курсор остановится здесь (_), и мне придется переписать название.
Я хочу сделать это:
Изменить название книги -> Заводной Оранжевой_
Я хочу изменить переменную BookName, которую я напечатал на экране, а не переписывать ее.
Я был бы рад, если вы поможете
Комментарии:
1. Проверьте строку чтения GNU
2. @DavidRanieri … или, может быть, проще
rlwrap executable
(rlwrap
этоreadline
оболочка )3. спасибо за «rlwrap — это оболочка для чтения строк» Я не понял, как установить эту библиотеку, вы можете помочь? @pmg
4. rlwrap — это не библиотека; это отдельный исполняемый файл. Вам не нужно каким-либо образом изменять свой код, просто нужно вызывать
rlwrap yourexe ...
, а неyourexe ...
из командной строки. Там должен быть пакет для вашего дистрибутива … не знаю о Windows.5. Я очень любитель Windows, к тому же у меня низкий уровень английского, так что не могли бы вы объяснить немного подробнее? Я не мог понять, что мне делать
Ответ №1:
вы можете использовать следующий код :
char bookName[30] = "A Clockwork Orange";
printf("Edit Book Name --> %s n", bookName);
printf("editing book name ...");
scanf("%s",bookName);
printf("your new Book Name --> %s", bookName);
return 0;
Комментарии:
1. Спасибо за внимание, но это не совсем то, что я хочу. Отредактируйте название книги -> Заводной апельсин После вывода этого вывода на экран, изменив место, где написано «Заводной апельсин», как мы хотим, затем нажмите enter, чтобы сохранить новое значение. Например: Изменить название книги -> Заводной апельсин 2 (введите) Я добавил ‘2’ в конец названия книги, и теперь новым значением переменной ‘BookName’ будет «Заводной апельсин 2».
2. Хорошо, теперь я понимаю, что вы хотите, вам нужно повторить BookName, чтобы узнать номер заголовка, поэтому вам нужно выполнить следующие действия: повторить bookNmae, чтобы получить последний символ проверить, является ли последний символ числом или нет, с помощью функции isdigit если isdigit true, вы должны сохранить номер взатем увеличьте другую переменную
3. Я понял, что вы имеете в виду, но это было не то, что я хотел сказать, я подробно объяснил свою проблему ниже, надеюсь, мы сможем поладить 🙂
4. Я просто хочу иметь возможность изменять значение, считываемое с помощью printf ()
5. Это не примерная задача, я предлагаю вам создать настольное приложение
Ответ №2:
Спасибо, но то, что я хотел, все еще не до конца понято 🙂 Может быть, потому, что мой английский немного плохой. Теперь дело в следующем; Я уже сохранил книги, сохраненные в библиотеке, в файл (.txt). Я получаю название нужной мне книги из файла, редактирую его и сохраняю снова. Возьмем, к примеру, 3-ю книгу: внутри файла:
- Убить пересмешника
- Дивный новый мир
- Заводной орнамент
- Секретная история
Мы считываем 3-ю книгу из файла и присваиваем ее переменной с именем BookName:
fgets(bookName, 30, file);
Теперь я хочу отредактировать эту книгу, потому что, как вы можете видеть выше, я неправильно написал название книги (Заводной орнамент).
Я хочу, чтобы программа:
Когда я сообщаю своей программе, что хочу ее отредактировать, программа будет печатать
Edit Book Name -> A Clockwork Ornage
И я нажму на 15-й символ (‘a’) с помощью мыши, и я удалю 2 символа (с пробелом) и наберу «an», и теперь консоль напишет:
Edit Book Name -> A Clockwork Orange
И, нажав «enter», я изменю значение переменной BookName на ее новое значение, его новое значение будет: «Заводной апельсин». Здесь я не смог выполнить часть до сих пор.
Вот где я спотыкаюсь, как я могу изменить что-то, что я напечатал на консоли с помощью printf().