我试图通过bash向我的C代码输入两个参数“ listen”和“ silent”。任何帮助,将不胜感激。我只是停留在重定向上,主要是如何执行bash的第5行。
#Clear screen
clear
gcc -o anagram anagram.c
#./anagram listen silent
if [ './anagram listen silent' -eq 0 ]
then
echo "Test succeeded"
else
echo "Test failed"
fi
这是我C语言的一部分
char inputTwo[100]; //Second input is cahracter with array size 100
printf("Input first word: "); //Prints string
scanf("%[^\n]%*c", inputOne);
printf("Input second word: "); //Prints string
scanf("%[^\n]%*c", inputTwo);
if (lengthChar(inputOne) == lengthChar(inputTwo)) //Checks length of string
{
toLowerCase(inputOne); //Sets inputOne and inputTwo to lower case
toLowerCase(inputTwo);
if (sumChar(inputOne) == sumChar(inputTwo)) //Checks the sum of the character arrays and compares
{
printf("Code 0, the two inputs are anagrams\n");
return 0;
}
else if (sumChar(inputOne) != sumChar(inputTwo))
{
printf("Code 1, the two inputs are not anagrams\n");
return 1;
}
}
else
printf("Number of characters not the same\n"); //If they don't have the same number of characters, returns code 1
return 1;
}
答案 0 :(得分:1)
'./anagram listen silent'
是一个字符串,不执行程序。要捕获运行程序的输出,请使用$()
,例如$(./anagram listen silent)
。
但是,您的C代码不接受这种参数传递。您正在完全从stdin
而不是从命令行参数读取输入。
接受命令行参数的方法是将主函数int main()
声明为int main(int argc, char *argv[])
(也可以使用char **argv
),然后使用argv
来获取命令行参数
您的代码仅接受来自stdin
的输入(使用scanf
),然后您可能必须通过调用echo -e "listen\nsilent" | ./anagram
之类的程序来传递输入。也可以用$()
换行以捕获输出。
更新:注意,您愿意获取执行程序的返回值而不是stdout
输出,然后可以使用> /dev/null
来吃{{ 1}}输出,然后使用stdout
获取返回值,例如$?
。
答案 1 :(得分:1)
由于您的C在$('.topScroll').click(function(){
$("html, body").animate({scrollTop : "0px"},"fast");
});
而不是via command line arguments上进行读取,因此,使用"here document"和简单的shell list tests可以非常简洁地工作。
stdin