2015-03-24 68 views
0

我试图printf一个整数,通过命令行传递但控制台打印一个长的随机值。C我不能printf一个整数,作为参数在命令行中传递

我要把它放到运行 “C:\用户\ PC \文档\ Visual Studio的2013 \项目\ Lab3的\调试\ 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; 
} 

回答

4

你不能只是 “演员”指向int的char *指针,并期望它被神奇地转换。这只是打印数组的第一个元素的地址。你需要将它与一个运行时函数转换为int如atoi(argv[2])查看功能的详细信息here

+0

非常感谢,伙计! – 2015-03-24 21:50:36

+0

你也可以对它进行处罚:*((int *)argv [2])。虽然不安全 – midor 2015-03-24 21:52:38

2

argv[2]变量是一个字符串指针(char*要准确)。因此,将其转换为int只会为您提供此指针的数值(或其中的一部分,具体取决于系统上的地址大小)。而这正是你所看到的“随机长号”。为了将字符串转换为数字,您可以使用像atoi这样的函数。