簡體   English   中英

將多個參數傳遞給C程序

[英]Passing multiple arguments to C program

我寫了一個小的C程序,它使用3個整數作為參數。 如果我這樣運行: myapp 1 2 3運行正常, argc正確顯示4,但如果我這樣做: echo 1 2 3 | myapp echo 1 2 3 | myapp ,argc僅顯示1。

C代碼的相關部分是:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
printf("Entered: %i\n", argc);
if ( argc < 4)
{
printf("You must enter 3 integers as command line arguments!\n");
exit(1);
}
}

這有什么問題?

echo 1 2 3 | myapp echo 1 2 3 | myapp不帶任何參數調用myapp 值通過stdin傳遞。

您可能要改用它(如果在Unix中使用bash):

    myapp `echo 1 2 3`

或者,如果您在一個名為numbers.txt的文件中具有數字列表,則也可以執行以下操作:

    myapp `cat numbers.txt`

管道將第一個進程的輸出傳遞到第二個進程的stdin ,這與命令行參數無關。 您需要的是xargs ,它使用第一個進程的輸出並將其用作命令行參數:

echo 1 2 3 | xargs myapp

echo 1 2 3 | myapp echo 1 2 3 | myapp將發送1 2 3到程序的標准輸入。 如果您的程序不讀取它,它將永遠不會看到這些數字。 您需要使用例如scanf才能正常工作。 請注意,您將必須自己解析字符串以計算以此方式傳遞的“參數”的數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM