在 C 中将 char 转换为 int,然后将值打印为 int?
Convert char to int in C and then printf the value as 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("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
argv
是指向 char
的 指针 的数组。 IE。它是 字符串 的数组。字符串 "1"
不 等于整数 1
(甚至字符 '1'
)。事实上,你正在做演员表几乎总是一个危险信号。
要将字符串转换为数字,请使用 strtol
函数。
并且永远记得在访问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
}
转换不正确
代码正在转换指针而不是引用的文本。
#include <stdlib.h>
// a = (int)argv[1];
a = atoi(argv[1]);
健壮的代码会使用 strtol()
或者你自己的 `strtoi()'
当我 运行 代码时,我不断得到这些奇怪的负值。有谁知道它们是什么以及如何只获得一个整数(例如 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("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
argv
是指向 char
的 指针 的数组。 IE。它是 字符串 的数组。字符串 "1"
不 等于整数 1
(甚至字符 '1'
)。事实上,你正在做演员表几乎总是一个危险信号。
要将字符串转换为数字,请使用 strtol
函数。
并且永远记得在访问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
}
转换不正确
代码正在转换指针而不是引用的文本。
#include <stdlib.h>
// a = (int)argv[1];
a = atoi(argv[1]);
健壮的代码会使用 strtol()
或者你自己的 `strtoi()'