LINUX.ORG.RU

Scanf

 


0

1

Скажите, как сделать так, чтобы scanf читала не с клавиатуры, а с того адреса или дескриптора файла, который я дам. Из какого регистра scanf берет инфу откуда ей чатать?


stdin.

man fscanf
man freopen

Tanger ★★★★★
()

Scanf - scan format Это семейство функций сканировния формата. Как и все другие функции семейств работы с форматами у неё есть родня с префиксами

  • fscanf()
  • sscanf()
  • vscanf()
  • vfscanf

каждая делает одно и тоже но с разных источников входа данных и/или с разных входных типов вроде va_list. Выбирай ту что конкретно нужна. А нужна fscanf. Про маны сказали уже.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Когда ж ты, дебил, уже букварь прочитаешь? Или забанешся?

anonymous
()

Не обращай внимания на этих грубых, неотесанных сижников, приходи лучше к нам в олл-инклюзив Rust коммьюнити – более теплого и общительного интернет коллектива еще поискать стоит. Все говорят, мол, «секта-секта», а вот знаете, что – Я лучше буду состоять в секте, чем в первобытном племени сижников, в котором сильный так и норовит съесть слабого скрипт-кидди, вместо введения его во взрослую жизнь.

Запомни, измени мир вокруг себя – и мир вокруг тебя изменится. Подумай об этом на досуге, за чашечкой Rust Programming Language.

Разорванный Флакон

anonymous
()
Ответ на: комментарий от Harald

В том то и дело…. как scanf понимает, что у него вроли stdin? Через что он понимает? Через дискриптор?

LGH
() автор топика
Ответ на: комментарий от stasolog

Чувак, подожди. Ответ может и дали, но я недогнал что то.

lea -4(rbp), rsi
lea fr(rbp), rdi

call scanf

Как сделать, так чтобы scanf читал не со стандартного ввода? То есть с не с клавиатуры

LGH
() автор топика
Ответ на: комментарий от stasolog

Нет, это ты читаешь из массива символов. Имя массива, есть указатель на его первый элемент. Из переменной типа int в переменную типа int. Есть такой вид scanf который бы мог?

LGH
() автор топика
Ответ на: комментарий от anonymous

Ну знаешь, я подразумевал прчтение из одной переменной в другую


int a=5;
int b; 


вот я просил подсказать как из «а» прочитать в «b» с помощью scanf.

Это как бы подводящее упражнение...

LGH
() автор топика
Ответ на: комментарий от LGH

вот я просил подсказать как из «а» прочитать в «b» с помощью scanf.

#define scanf_a_to_b(a, b) (*(&(b)) = (a))

Все по канонам C. MISRA, Google Style Guide все здесь.

Разорванный Флакон

anonymous
()
Ответ на: комментарий от LGH

подразумевал прчтение из одной переменной в другую

Нинадо тебе ничего. И к сям больше не подходи. Всё хорошо. Главное не напрягайся.

anonymous
()
Ответ на: комментарий от Harald

Чувак, у каждого файла есть свой дескриптор. Ноль, это стандартный ввод, а это клавиатура клавиатура тоже файл. Допустим scanf берет его из регистра rax. Это к примеру. Вот если бы я мог взять дескриптор другого файла, например текстового и поместить его в регистр rax то scanf читал бы уже не с клавиатуры, а из файла.

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

Вроде уважаемый stasolog уже объяснил. Надо только проверить.

LGH
() автор топика
Ответ на: комментарий от LGH

scanf читает из глобальной переменной FILE *stdin (<stdin.h>). scanf(buf, ...) == fscanf(stdin, buf, ...). Если тебе нужен scanf читающий память то есть sscanf. Они используют общую функцию для чтения, но принимают разные данные. Есть способ переуказать stdin (и любой FILE*) на другой открытый файл, scanf все равно будет читать stdin, но stdin будет уже указывать на тот файл который ты открыл... Делать так не имеет смысла.

stasolog
()
Последнее исправление: stasolog (всего исправлений: 1)
Ответ на: комментарий от LGH

Допустим scanf берет его из регистра rax.

Вот если бы я мог взять дескриптор другого файла, например текстового и поместить его в регистр rax то scanf читал бы уже не с клавиатуры, а из файла.

Все так и есть, если нужен другой дескриптор просто помещай в регистр rax нужное значение:

register FILE *rax = fopen("file.txt", "r");

// обработка ошибок опущена
anonymous
()
Ответ на: комментарий от LGH

Потому что вместо замены stdin на file_x, ты можешь просто вызвать fscanf(file_x, «%...», ...);

stasolog
()
Ответ на: комментарий от anonymous

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

LGH
() автор топика
Ответ на: комментарий от LGH

Если я ноль в программировании

Ноль в программировании и знаешь, что такое rax, регистры? Почти полтора дня задавал один и тот же вопрос под разным соусом, при этом ни разу не показав свой код или ошибки компилятора? Просто старайся лучше, и тогда твой троллинг будет не так очевиден, а пока 2+ (не 2, учитывая, что парочку ты в этом треде уже прожарил).

anonymous
()
Ответ на: комментарий от Harald

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

А так тема может быть уже наверное закрыта. Спасибо всем.

LGH
() автор топика
Ответ на: комментарий от stasolog

Возможно он просто странный, на ассемблере вон пишет, я встречал похожих людей…

Просто подумай, как пишущий на ассемблере может пытаться присваивать b = a через scanf?

anonymous
()
Ответ на: комментарий от anonymous

Чукча

А судя по «темам», чукча ещё и поехавший.

anonymous
()
Ответ на: комментарий от anonymous

Это не то место для тролинга. Тролинг вобще не мое. Знать регистры, не значит уметь программировать. Я знаю что такое суп, но вряд ли я его сварю. Я знаю что такое авто, но вряд ли его соберу… несколько дней задаю один и тот же вопрос? Это говорит о том, что я имею огромное желание разобраться.

Ты же хочешь видеть так как ты это хочешь. Ты прям навязываешь всем свое видение того что я какое то зло, что тролю, обманываю. Обманываю к сожалению не я, а меня. И обманывают такие как ты, те кто обвиняют во лжи меня, но сами лгут мне, оправдывая свою ложь, тем что лгать лжецу не грех. Лжецы, зовут меня лжецом.

LGH
() автор топика
Ответ на: комментарий от LGH

Я знаю что такое суп, но вряд ли я его сварю.

Нихрена ты не знаешь.

«Я знаю что такое программа, но вряд ли я её напишу».

anonymous
()
Ответ на: комментарий от LGH

Если тебе из интереса, то советую посмотреть на fasm. Он хорош не только понятным синтаксисом, но и мощными макросами, они позволяют не меняя компилятора добавить в язык например... ООП! - http://board.flatassembler.net/topic.php?t=9896.

stasolog
()
Ответ на: комментарий от anonymous

Что ты мне тычешь ссылку? Эдик, вот щас налетят модераторы, опять наказание будет мне, а ты мразь опять будешь в стороне, но я не могу не сказать тебе гниде, что вот последнее время меня , жизнь сводит с блядями на вроде тебя. На авито у пары хуесосов заказал деталь, они взяли деньги, взяли материал, и все испортили. Просто угондонили. Я не забрал ничего. А сегодня хотел купить воды и не наскреб в карманах. Что ты хочешь мне сказать эдя? Кругом люди, а пидр я. Почему только люди поступают так, как должен поступать я, ведь я же пидр в их глазах? Но я никого не наебал! Ни на ком не наварился. Я только теряю и теряю. А меня наебывают и наебывают.

А кто наебывает, а такие как ты эдя!!! Такие как ты и тебе подобные. Я уверен, что надо подождать. И я подожду.

LGH
() автор топика
Ответ на: комментарий от LGH

вот последнее время меня , жизнь сводит с блядями

Последнее время говоришь?:

Первая созданная тема: 02.02.20 19:51:26

Это с какого же дня оно стало последним, а когда были «былые времена»?

anonymous
()

Администрация! Огромная просьба к вам! Когда баните или наказываете, то будте пожалуйста справедливы не наполовину а поностью. Не для виду, и не для развлечения. Если наказываете, то наказывайте всех причастных, а подстрекателей, подпевал и подсерал наказывайте вдвойне. Эти падлы отточили свое умение оставаться в стороне, до совершенства. Уверяю, если будете наказывать и тех и других,то и тролли пропадут, и темы будут не засраны, и будет вообще порядок и чистота. Потому что как только эти приспособившиеся мрази осознают, что не удастся свое дерьмо выдать за чужое, они как истинные приспособленцы приспособятся к новым условиям, то есть к порядку.

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

LGH
() автор топика
Ответ на: комментарий от LGH

Я вообще сторонник антипсихиатрии, но конкретно тебе стоит обратиться, пока ещё связно мысли совсем не потеряна.

anonymous
()
Ответ на: комментарий от LGH

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

Кто же тогда на форуме останется?

anonymous
()
Ответ на: комментарий от anonymous

Кто же тогда на форуме останется?

Форумы будут чисты как слеза.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.