我试图将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 :(得分: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)
使用strtol
将argv[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;
}