2016-10-08 6 views
0

Я хочу написать программу на C, которая принимает в качестве значения целое число и выводит его квадрат. Вот что я пробовал.Прочитайте целое число из stdin (in C)

Однако

  • ./a.out < 3 выходы 32768 и
  • ./a.out < 4 также выводит 32768.

Где я неправ? Благодарю.

#include <stdio.h> 

int main(){ 
    int myInt; 
    scanf("%d", &myInt); 
    printf("%d\n",myInt*myInt); 
} 
+2

Вы должны передать имя файла в качестве источника перенаправления и этот файл содержит требуемый ввод текста. Поэтому, если 'my.txt' содержит' 4', команда './a.out

+0

Если вы используете Bash, вы также можете использовать 'program <<< input', что эквивалентно' echo input | program'. –

ответ

2

Похоже, что вы пытаетесь сделать, это

echo 4 | ./a.out 

синтаксис < является

program < input_file 

в то время как | is

command_with_output | program 
1

На правой стороне «<», должен быть файл, содержащий входные данные.

попробовать эту вещь:

$ эхо "3"> Foo
$ ./a.out < Foo

Прочитайте это для получения дополнительной информации (специально раздел 5.1.2.2): http://www.tldp.org/LDP/intro-linux/html/chap_05.html

1
./a.out < 4 

Это попытка прочитать файл с именем 4 и использовать его содержимое в качестве входных данных для a.out Вы можете сделать это в любом случае, но поймите < оператор не для ввода персонажа, который вы вводите, буквально.

Один из способов сделать это будет:

echo "4" > 4 
./a.out < 4 
1

Я просто запускаю вашу программу и ее работы отлично. Если вы хотите, чтобы программа получила целочисленный ввод, вы должны использовать argc, argv, как показано, и не использовать scanf.

* Код ARGC ARGV: *

atoi - преобразование символ * в целое.

Если вы хотите запустить программу, а затем вставить целое число, вы сделали это правильно! you can read about atoi

Для запуска этой программы вы должны comile и запустить из терминала:

gcc a.c -o a  
./a 3 

и вы получите:

9