我有这段代码:
#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;吨!
答案 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];