【问题标题】:C I cant printf an integer, which was passed as a argument in command lineC 我不能 printf 一个整数,它在命令行中作为参数传递
【发布时间】:2015-03-24 21:45:09
【问题描述】:

我正在尝试 printf 一个通过命令行传递的整数,但控制台会打印一个很长的随机值。

我把它放到 RUN "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;
}

【问题讨论】:

    标签: c command-line main argument-passing


    【解决方案1】:

    您不能只是将 char* 指针“强制转换”为 int 并期望它被神奇地转换。那只是打印数组第一个元素的地址。您需要将其转换为具有运行时函数的 int,例如 atoi(argv[2]) 参见函数详细信息 here

    【讨论】:

    • 你也可以双关语:* ((int *)argv[2])。虽然不安全
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-15
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2015-12-22
      相关资源
      最近更新 更多