在C中将字符转换为int,然后将值打印为int?
当我运行代码时,我不断得到这些奇怪的负值。是否有人知道它们是什么,以及如何得到一个int(例如10、20、8…)?为什么我总是得到不同的错误值?当我用参数2和3运行代码时,它应该输出10在C中将字符转换为int,然后将值打印为int?,c,int,C,Int,当我运行代码时,我不断得到这些奇怪的负值。是否有人知道它们是什么,以及如何得到一个int(例如10、20、8…)?为什么我总是得到不同的错误值?当我用参数2和3运行代码时,它应该输出10 int main(int argc, char *argv[]) { int h; int a; int b; a = (int) argv[1]; b = (int) argv[2]; if (argc == 3) { h = 2 * (a + b); printf("
int main(int argc, char *argv[]) {
int h;
int a;
int b;
a = (int) argv[1];
b = (int) argv[2];
if (argc == 3) {
h = 2 * (a + b);
printf("The perimeter of the rectangle is %d\n", h);
} else {
fprintf(stderr, "Usage: %s <arguments>\n", argv[0]);
}
}
Output:
The perimeter of the rectangle is -1874251136
or
The perimeter of the rectangle is -1424723328
or
The perimeter of the rectangle is -940059169
intmain(intargc,char*argv[]){
int-h;
INTA;
int b;
a=(int)argv[1];
b=(int)argv[2];
如果(argc==3){
h=2*(a+b);
printf(“矩形的周长为%d\n”,h);
}否则{
fprintf(stderr,“用法:%s\n”,argv[0]);
}
}
输出:
矩形的周长为-1874251136
或
矩形的周长为-1424723328
或
矩形的周长为-940059169
argv
是指向char
的指针数组。也就是说,它是一个字符串数组。字符串“1”
不等于整数1
(甚至不等于字符'1'
)。事实上,你正在做一个演员几乎总是一个危险信号
要将字符串转换为数字,请使用函数
在访问argv
之前,请始终记住选中argc
b = (int)argv[2]
(int)
是指针值的强制转换——它只是转换类型
相反,请尝试使用
atoi
或strtol
将字符串转换为整数值。测试太晚
if(argc==3){
测试所需的argc
,但不幸的是在使用argv[1],argv[2]
之后。请将测试移到前面,并在不需要时退出。注意:正确使用错误消息stderr
if (argc != 3) {
fprintf(stderr,"Usage: %s <arguments>\n", argv[0]);
return -1; // or return EXIT_FAILURE
}
if(argc!=3){
fprintf(stderr),用法:%sEr…您正在将char*
变量转换为int
?为什么?这到底应该完成什么?如果您想将包含数字的字符串转换为int,您需要使用strtol()
或类似的东西。
#include <stdlib.h>
// a = (int)argv[1];
a = atoi(argv[1]);