我在我的C程序中将复制管道符号作为字符串。虽然编译它的工作正常,但执行时我收到以下错误
sh: Syntax error: "|" unexpected
这是代码:
puts("Enter the password");
fgets(buffer, 50, stdin);
strcpy(command, "echo -n ");
strcat(command, buffer);
puts(command);
strcat (command, "| md5sum");
puts(command);
system(command);
基本上我正在尝试为用户输入计算md5sum。
答案 0 :(得分:1)
fgets包含\ n(在用户输入的末尾)在'缓冲区'中,这会破坏您传递给shell的命令行。在编写命令行之前,您需要删除\ n。
(对于任何认真的工作,最好使用库调用而不是外壳到md5sum(1);例如https://www.openssl.org/docs/crypto/md5.html。)