Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c命令行int是错误的_C_Int_Command Line Arguments - Fatal编程技术网

c命令行int是错误的

c命令行int是错误的,c,int,command-line-arguments,C,Int,Command Line Arguments,每当我从命令行发送一个数字时,它就会出错并给出错误的数字 edgeWidth=*argv[2]; printf("Border of %d pixels\n", edgeWidth); fileLocation=3; /hw3-e100 baboon.ascii.pgm是我通过命令行发送的,当我将数字打印到屏幕上时,我得到49作为数字 int-edgeWidth在程序开始时定义 为什么它不给我100英镑?问题是 edgeWidth = *argv[2]; 您正在将“100”的第一个字符指定给

每当我从命令行发送一个数字时,它就会出错并给出错误的数字

edgeWidth=*argv[2];
printf("Border of %d pixels\n", edgeWidth);
fileLocation=3;
/hw3-e100 baboon.ascii.pgm
是我通过命令行发送的,当我将数字打印到屏幕上时,我得到49作为数字

int-edgeWidth
在程序开始时定义


为什么它不给我100英镑?

问题是

edgeWidth = *argv[2];
您正在将
“100”
的第一个字符指定给edgeWidth。49恰好是
'1'
的ASCII值

如果希望
100
,则需要使用类似
atoi
strtol
的方法将字符串解析为int


附录:关于数字促销,美国6.5.16.1第二部分:

在简单赋值(=)中,转换右操作数的值 并替换存储的值 在由左操作数指定的对象中


因此,数字升级似乎在这里发生。

问题在于

edgeWidth = *argv[2];
您正在将
“100”
的第一个字符指定给edgeWidth。49恰好是
'1'
的ASCII值

如果希望
100
,则需要使用类似
atoi
strtol
的方法将字符串解析为int


附录:关于数字促销,美国6.5.16.1第二部分:

在简单赋值(=)中,转换右操作数的值 并替换存储的值 在由左操作数指定的对象中


因此,数字升级似乎发生在这里。

argv
包含一个字符串数组。因此,
argv[1]
是一个字符串,您需要将其转换为整数:

edgeWidth = atoi(argv[1]);

argv
包含字符串数组。因此,
argv[1]
是一个字符串,您需要将其转换为整数:

edgeWidth = atoi(argv[1]);

因为命令行参数默认为
char*
(或者可能是
char**
某处),而不是
int
。您需要进行适当的转换,如
atoi()
,才能将其用作
int

您应该使用
edgeWidth=atoi(argv[2])
来获得预期的输出。

因为命令行参数默认为
char*
(或者可能是
char**
某处),而不是
int
。您需要进行适当的转换,如
atoi()
,才能将其用作
int

您应该使用
edgeWidth=atoi(argv[2])
来获得预期的输出。

好的,我觉得这就是问题所在。谢谢你,成功了!非常感激好吧,我觉得这就是问题所在。谢谢你,成功了!非常明显的错误-使用
atoi(argv[2])
而不是
atoi(*argv[2])
。你最终会看到一个字符而不是一个字符串。我不认为编译器会让您…错误-使用
atoi(argv[2])
而不是
atoi(*argv[2])
。你最终会看到一个字符而不是一个字符串。我不认为编译器会让你。。。