我编写了一个脚本来在运行时隐藏用户输入,它可以作为一个简单的脚本工作,但我想集成到 c 程序中,但出现以下错误:
warning: missing whitespace after macro name
error: expected ')' before 'Password'
有人能告诉我我做错了什么吗?
这是 C 程序:
#include"header.h"
#define SHELLSCRIPT"\
#bin/bash\n\
printf"Password Please:"\n\
stty -echo\n\
read pass\n\
stty echo\n\
printf'\n'\n\
sleep"2"\n\
echo "$pass"\n\
"
int main()
{
puts("Will execute sh with following script:");
puts("SHELLSCRIPT");
puts("Starting now");
system(SHELLSCRIPT);
return 0;
}
答案1
这是您的代码的修复版本:
// Compile with:
// gcc c-shellscript.c -o c-shellscript
#include <stdio.h>
#include <stdlib.h>
#define SHELLSCRIPT "\
printf 'Password Please:';\n\
stty -echo;\n\
read pass;\n\
stty echo;\n\
printf '\\n';\n\
sleep 2;\n\
echo $pass;"
int main()
{
puts("Will execute sh with following script:");
puts("---------");
puts(SHELLSCRIPT);
puts("---------");
puts("Starting now");
system(SHELLSCRIPT);
return 0;
}
然而,我认为这样做不是好习惯。即使您是从代码内部生成 shellscript 文件,创建单独的 shellscript 文件并直接调用它也要容易得多。
请查看这些以了解更多信息: