|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.02.2017, 08:53 | #1 |
Пользователь
Регистрация: 23.02.2017
Сообщений: 33
|
printf / scanf C
Linux
Vim GCC Доброго времени суток! Получается вводить и выводить числа на C, а слова не получается. Как поправить? Код:
Код:
Код:
1337.c: In function ‘main’: 1337.c:7:29: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=] printf("Вас зовут %s \n", imena); Он ругается на "%s" или на char? Пытался написать '%s' тоже не работает..... Последний раз редактировалось Alex11223; 23.02.2017 в 09:01. |
23.02.2017, 09:01 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
char это 1 символ, а не массив.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
23.02.2017, 11:05 | #3 | |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,529
|
Ознакомься с кодом здесь:
http://programmersforum.ru/showpost....0&postcount=65 Сообщаю список твоих ошибок. Ты задал символ char imena. Символ - это 1 байт, вот туда только одна буква и помещается. Что он тебе и вывел. Строка - это массив символов. То есть для работы со строками в C используется массив char imena [80]. Читай внимательно учебник. Адрес такого массива - imena (а не &imena). Для работы со строками в функции scanf нужно использовать формат ввода %s, а %c только 1 символ вводит, и всё. И всё равно в такой ситуации надо использовать не scanf (), а gets () из библиотеки <stdlib.h>, потому что scanf () берёт строку до первого пробела, а gets () - до нажатия <Enter>. Формат вывода строки - printf (), но не %c (он только 1 символ выводит), а %s, причём указывать надо адрес массива. ---------- А когда ты перейдёшь на Visual C++ или Visual Studio, то там для работы со строками есть специальный класс CString, который гораздо более гибкий, чем просто работа с массивами. Цитата:
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
|
23.02.2017, 11:20 | #4 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
А &imena не адрес что ли?
Цитата:
Например QString в Qt. В стандартном С++ есть std::string.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
23.02.2017, 11:25 | #5 |
Пользователь
Регистрация: 23.02.2017
Сообщений: 33
|
Alex11223 и jura_k спасибо вам обоим!
На ответ Alex11223 я загуглил "Массивы для символов на C" или что то на подобие! И нашёл тип[char] переменная[imena] количество символов[80] Но без jura_k я бы не сразу догадался убрать знак & перед imena Вот, всё работает! Код:
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум. Последний раз редактировалось Alex11223; 23.02.2017 в 11:40. |
23.02.2017, 11:50 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
&imena тоже будет работать, только будет варнинг про разные типы указателей.
imena и &imena[0] будет без варнинга.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
%ls и %lc в printf и scanf | Krasiosoft | Помощь студентам | 2 | 08.07.2015 22:30 |
netbeans ждем scanf и не показывает printf | morg4n | Общие вопросы C/C++ | 1 | 22.05.2013 00:17 |
printf печатает последнее введеное в scanf | aktec | Помощь студентам | 9 | 07.03.2011 20:41 |
лабораторная работа printf/scanf | elenai | Общие вопросы C/C++ | 2 | 27.12.2010 10:47 |
лабораторная работа С++(printf/scanf) | elenai | Помощь студентам | 0 | 26.12.2010 21:50 |