2015-09-17 58 views
0

如何识别参数是否传递带或不带“”。 例如:在带和不带“”的情况下在C中传递参数“”

 
$ ./a.out "Hello I am chain of characters with spaces" 
$ ./a.out Hello I am not a chain of characters with spaces 
+4

这是平台相关的,因为平台(在Linux中是shell)负责解析文本。 – unwind

+2

这里的引用实际上是shell语法的一部分。它们由shell解释,通常在句子作为参数传递给程序之前被剥离。 –

+0

我正在使用Mac。你知道,问题是在我上一次考试期间,我有一个练习,我必须做主要谁不会没有参数“”。 –

回答

1

argc(自变量数)。在第一种情况下,它会是2,在第二种情况下它会高得多。 (因为argv的元素0将是a.out,元素1将是带引号的字符串)。

3

引号被解析和处理(在本例中)Linux shell。

在第一种情况下,外壳基本上是这样做的:

execl("./a.out","a.out","Hello I am chain of characters with spaces", NULL); 

而在第二种情况下,壳是这样做的:

execl("./a.out","a.out","Hello", "I", "am", "chain", "of", "characters", "with", "spaces", NULL); 

一旦你的程序被调用,外壳已经完成了论证处理。你在这一点上所能做的就是查看argc来查看你有多少个参数,并查看每个个体参数以查看它是否包含空格并相应地处理它们。

+0

只有最好的答案,但不是*确定性*。也就是说,你只知道必须有一个参数引用** iff **你至少发现一个空格。你无法从'a.out“hello”'辨别'a.out hello'。 – usr2564301

+0

好的,谢谢。我会尽力找到一个用途。 –

相关问题