所以,我一直在研究这个简单的代码块。当我输入“./a.out -n”
时,我想要打印但是,这不起作用。我一直在使用stackoverflow试图解决这个问题,但没有这样的运气。任何帮助,将不胜感激。
#include <stdio.h>
#include <stdlib.h>
void parse_cmdline(int argc, char *argv);
int main (int argc, char *argv[]) {
parse_cmdline(argc, argv);
}
void parse_cmdline(int argc, char *argv)
{
int x,i,m,n = 0;
if (*(++argv) == 'n'){
x = 1;
printf("Output array: "); /* not being displayed*/
}
}
答案 0 :(得分:0)
只需写下
if (**++argv == 'n'){
该函数应声明为
void parse_cmdline(int argc, char **argv);
否则,您应该指定要传递给函数的参数。例如
parse_cmdline(argc, argv[1]);
您可以通过以下方式检查传递给程序的参数
int main (int argc, char *argv[]) {
for ( int i = 0; i < argc; i++ ) puts( argv[i] );
}
答案 1 :(得分:0)
尝试:
#include <stdio.h>
#include <stdlib.h>
void parse_cmdline(int argc, char *argv[]);
int main (int argc, char *argv[]) {
parse_cmdline(argc, argv);
}
void parse_cmdline(int argc, char *argv[])
{
int x,i,m,n = 0;
if (*(argv[1]) == '-' && *(++argv[1]) == 'n'){
x = 1;
printf("Output array: "); /* not being displayed*/
}
}
并使用./a.out -n
运行它。
所以,我已经检查了位置1上的argv值的第0个和第1个字符(&#34; ./ a.out&#34;位于位置0,&#34; -n&#34;位置1) 。
那是你想要的吗?
另外,你不能忽视警告:
1.c: In function ‘main’:
1.c:5:23: warning: passing argument 2 of ‘parse_cmdline’ from incompatible pointer type [-Wincompatible-pointer-types]
parse_cmdline(argc, argv);
^
1.c:3:6: note: expected ‘char *’ but argument is of type ‘char **’
void parse_cmdline(int argc, char *argv);
如果你写
parse_cmdline(argc, argv);
那么parse_cmdline
应该是
void parse_cmdline(int argc, char *argv[]);