Мы, поскольку вы находитесь на Ubuntu и используете терминал, я предполагаю, что вы используете bash. Проблема, с которой вы сталкиваетесь, не является реальной проблемой c, но как bash запускает вашу программу.
Терминальные крючки в празе ./program [args, ...] < redirected
, вызов bash внутри функции exec
, чтобы запустить вашу программу и настроить среду для вашей программы. Он устанавливает вашу программу с любым из аргументов между [], но после и включает символы перенаправления «<». Он не представлен вашей программе в качестве аргумента, но он перехватывает ее до стандартного ввода.
Так что, если вы хотите сделать что-то с ним вы можете сделать:
#include <stdio.h>
int mychar = getchar(stdin).
потому что FILE* stdin
; уже открыт для него. Файл stdin в противном случае принял бы вход с клавиатуры, но теперь будет читать из файла. Вы, конечно, не ограничены getchar, вы можете взять много функций c из stdio.h, которые берут ФАЙЛ * и используют его.
'stdin' не совпадает с аргументами командной строки *, переданными в программу. – EOF
"* Есть ли способ решить эту проблему *" Какая проблема? Вы описали четко определенное поведение, но не сказали нам, в чем проблема. – alk
Для второго примера используйте любые * чтения * из 'stdin' (Standard Input), чтобы получить ваши номера. – alk