2015-11-16 15 views
0

Я пытаюсь умножить входные данные из stdin, а также ввод из аргумента командной строки, но получая ошибку приведения типов.Умножить целое число Stdin с аргументом командной строки (целое число)

#include<stdio.h> 
#include<stdlib.h> 
int main(int argc, char *argv[]) 
{ 
     int i,x,result; 

     printf("Enter a integer:\n"); 
     x=getchar(); 

     result=argv[1]+x; 

     printf("Result is :%d",result); 
     return 0; 




} 
+0

ARGV [1] является символом * –

+0

@RaghuSrikanthReddy но могу я знаю, как я преобразовать символ в целое число? –

+1

использовать atoi для него –

ответ

2

Преобразование строки в целое число с помощью atoi() или strtod() перед выполнением сложения.

0

argv[1] это тип char, поэтому вы не можете напрямую добавить его в целое число. Чтобы исправить, вы можете преобразовать argv[1] в соответствующий int с помощью функции atoi. Так что ваш код будет выглядеть следующим образом:

result=atoi(argv)+x; 

Если вы не сделаете это, и игнорировать это предупреждение, вы обнаружите, что a='1' не то же самое, как a = 1

1

Еще одна проблема, которую вы увидите, что значение 'x' является ASCII, другими словами, если кто-то типа '1' 'x' будет фактически содержать 49, символ ASCII для '1'. Поэтому вам нужно использовать atoi() на 'x'. Кроме того, вы получаете только один символ из stdin, поэтому, если кто-то набрал «142», вы увидите только «1»!

Помимо этих проблем, ваша программа должна работать хорошо :-)

0

Использование strtolargv[1] для преобразования в целое, и scanf читать один из stdin.

#include<stdio.h> 
#include<stdlib.h> 

int main(int argc, char *argv[]) 
{ 
    int i, x, result; 

    if (argc < 2) 
    { 
     printf("USAGE: %s <integer to add>\n", argv[0]); 
     return 1; 
    } 

    char* ok; 
    i = strtol(argv[1], &ok, 10); 
    if (*ok) 
    { 
     puts("Please enter a valid integer as the first command line argument"); 
     return 1; 
    } 

    puts("Enter an integer:"); 
    if (scanf("%d", &x) != 1) 
    { 
     puts("Invalid input"); 
     return 1; 
    } 

    result = i + x; 

    printf("Result is: %d\n", result); 
    return 0; 
} 
Смежные вопросы