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.

等函数