使用命令行参数乘以Stdin整数(整数)

时间:2015-11-16 08:46:43

标签: c

我试图将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;




}

4 个答案:

答案 0 :(得分:2)

在执行添加之前,使用atoi()strtod()将字符串转换为整数。

答案 1 :(得分:1)

你会看到的另一个问题是'x'的值是ASCII,换句话说,如果有人输入'1''x'实际上将包含49,ASCII字符为'1'。所以你需要在'x'上使用atoi()。此外,你只是从stdin中获取一个角色,所以如果有人输入'142',你只会看到'1'!

除了这些问题,你的程序应该运行良好: - )

答案 2 :(得分:0)

argv[1]char类型,因此您无法直接将其添加到整数中。 要修复,您可以使用argv[1]函数将atoi转换为相应的int。所以你的代码看起来像这样:

result=atoi(argv)+x;

如果您不这样做并忽略该警告,您会发现a='1'a = 1

不同

答案 3 :(得分:0)

使用strtolargv[1]转换为整数,使用scanfstdin读取一个。

#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;
}