C 我不能打印一个整数,它在命令行中作为参数传递
C I cant printf an integer, which was passed as a argument in command line
我正在尝试打印一个由命令行传递的整数,但控制台打印了一个很长的随机值。
我把这个放到了运行"C:\Users\pc\Documents\Visual Studio 2013\Projects\Lab3\Debug\Lab3.exe randomString 4"
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]){
printf("%s\n", argv[0]); // Working
printf("%s\n", (argv[1])); // working
printf("%d\n", (int)(argv[2])); // NOT Working
printf("%d\n", argc); // Working
system("pause");
return 0;
}
您不能只是 "cast" 一个指向 int 的 char* 指针并期望它被神奇地转换。那只是打印数组第一个元素的地址。您需要使用运行时函数将其转换为 int,例如 atoi(argv[2])
请参阅函数详细信息 here
argv[2]
变量是一个字符串指针(准确地说是char*
)。所以将它转换为 int
只会给你这个指针的数值(或者它的一部分,取决于你系统上地址的大小)。这正是您看到的 "random long number"。为了将字符串转换为数字,您可以使用 atoi
.
等函数
我正在尝试打印一个由命令行传递的整数,但控制台打印了一个很长的随机值。
我把这个放到了运行"C:\Users\pc\Documents\Visual Studio 2013\Projects\Lab3\Debug\Lab3.exe randomString 4"
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]){
printf("%s\n", argv[0]); // Working
printf("%s\n", (argv[1])); // working
printf("%d\n", (int)(argv[2])); // NOT Working
printf("%d\n", argc); // Working
system("pause");
return 0;
}
您不能只是 "cast" 一个指向 int 的 char* 指针并期望它被神奇地转换。那只是打印数组第一个元素的地址。您需要使用运行时函数将其转换为 int,例如 atoi(argv[2])
请参阅函数详细信息 here
argv[2]
变量是一个字符串指针(准确地说是char*
)。所以将它转换为 int
只会给你这个指针的数值(或者它的一部分,取决于你系统上地址的大小)。这正是您看到的 "random long number"。为了将字符串转换为数字,您可以使用 atoi
.