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])
。你最终会看到一个字符而不是一个字符串。我不认为编译器会让你。。。