2015-04-12 3 views
-2

Как получить ввод с помощью подсказки? Я попытался скомпилировать приведенный ниже код в «a.exe» и выполнить его из CMD, например «gcc a.exe 5», но он не выводит номер, как предполагалось.C получение ввода от CMD

#include <stdio.h> 

int main(int a) 
{ 
    printf("%d\n", a); 
    return 1; 
} 

Я сделал что-то неправильно при установке компилятора, или я пытаюсь запустить его неправильно?

+1

Они называются " аргументы командной строки ". Вы можете прочитать больше в [этом учебнике] (http://crasseux.com/books/ctutorial/argc-and-argv.html). – ace

+0

'gcc test.c', то' a.exe 5', print '2' - это число токенов строки comand – BLUEPIXY

+0

, также' int main (int a) 'является недопустимым синтаксисом. Например. 'int main (int n, char * v []) {if (n> 1) printf ("% s \ n ", v [1]); return 0;} ' – BLUEPIXY

ответ

2

Ваши main() параметры являются неправильными, вы должны сделать это таким образом:

int main(int argc, char **argv) { 
    if(argc > 2) { 
     printf("%s\n", argv[2]); 
    } 
    else { 
     printf("No arguments\n"); 
    }   
} 

Обратите внимание, что int argc представляет количество параметров и char **argv является массив, содержащий все параметры, как строки, в том числе «НКУ», «a.exe» и т.д. В вашем случае, если вы запустите программу так: gcc a.exe 5, ваши параметры будут: argc = 3, argv = ["gcc", "a.exe", "5"]

+0

Это просто напечатает прилагаемый аргумент, независимо от того, является ли это цифрой или нет. – Deanie

+0

@Deanie Если вы хотите преобразовать его в целое число, вы можете использовать 'atoi()'. Тем не менее, вы всегда должны проверить, действительно ли ваша строка может быть преобразована в и целое число перед использованием 'atoi()'. –

+0

примечание! : 'argv [2]' '' NULL', когда 'argc == 2'. – BLUEPIXY

1

Чтобы получить ввод с помощью подсказки, самым простым способом было бы просто использовать оператор scanf. scanf в основном ждет и сканирует пользовательский ввод, который затем может быть сохранен как переменная. Например, код, который будет вводить ввод для «Дайте мне номер». а затем выплевывает назад результат был бы:

#include <stdio.h> 

int main() 
{ 
    int num; //Initializes variable 
    printf("Please give me a number.\n"); //Asks for input 
    scanf("%d", &num); //scanf is the function, %d reserves the space, and the &*variable* sets the input equal to the variable. 
    getchar(); //Waits for user to input. 
    printf("Your number was %d.\n", num); //Spits it back out. 
    return 0; 
} 

Выход будет:

[PROGRAM BEGINS] 
Please give me a number. 
>>>5 
Your number was 5. 
[PROGRAM ENDS] 
+0

Я уже знаю, что я просто использовал это как случайный пример. – Kyokon

1
#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    if(argc == 2) 
     printf("%d\n", atoi(argv[1])); 

    return 0; 
} 
Смежные вопросы