C指针不起作用

时间:2017-05-29 10:34:15

标签: c pointers

我有这段代码:

#include<stdio.h>
int main(int args,char*argv[])
{
    char *input_f;

    input_f=(argv+1);

    printf("%d\n",input_f);
    printf("%d\n",(argv+1));
    printf("%s\n",*(argv+1));
    printf("%s\n",argv[1]);
    printf("%s\n",*input_f);
    return 0;
}

但如果我运行它(test.exe hi.txt),输出将为:

1577880
1577880
hi.txt
hi.txt
(null)

如何创建指向argv[1]的指针? 为什么我的代码不起作用?

编辑:程序在输入处获取文件,指针input_f指向它,但在输出处argv[1]打印文件名但input_f没有& #39;吨!

2 个答案:

答案 0 :(得分:1)

使用此

input_f=*(argv+1);

而不是

input_f=(argv+1);

使用此

printf("%s\n", input_f);

而不是

printf("%s\n",*input_f);

完整代码:

#include<stdio.h>
int main(int args,char*argv[])
{
    char *input_f;

    input_f=*(argv+1);

    printf("%s\n",input_f);
    printf("%s\n",*(argv+1));
    printf("%s\n",argv[1]);
    printf("%s\n",input_f);
    return 0;
}

答案 1 :(得分:0)

  

为什么我的代码不起作用?

假设input_f被声明为:

char *input_f;

%s中的格式说明符printf()

printf("%s\n",*input_f);

期望给定参数的类型为char *,您提供的*input_f类型为char

  

如何创建指向argv [1]的指针?

argv指向char 的指针数组。因此,argv[1]指向char 的类型。因此,您可以将其存储在指向char 的指针的指针中,即:char **

char **p = &argv[1];