2015-03-24 69 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這樣的函數。