我正在使用此代碼來提取受密碼保護的rar文件。我正在使用系統函數來調用rar命令。如果我在系統命令中使用密碼,它可以工作。但是,由於試圖將密碼作爲參數傳遞,它不會。例如,如果在此代碼中使用密碼密碼,它會給出錯誤「pwd不被識別爲內部或外部命令,可操作的程序或批處理文件」。 但是,如果我更改代碼,並使其「 」系統(「rar e -ppwd wingen.rar」)「,它的工作原理。 有人可以解釋我,我在做什麼錯誤?提前致謝。c中的系統函數對我不起作用
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
char pword[20];
printf("enter the pword : ");
gets(pword);
system(("rar e -p%s wingen.rar",pword));
getchar();
return 0;
}
您不應該使用'gets()'。 manpage明確地說'永遠不要使用gets()。 [...]使用fgets()代替'。如果'gets()'讀取的字符多於緩衝區的大小,它將繼續將它們存儲在末尾,這很危險。 – 2010-08-22 05:34:36
另外,請閱讀[常問問題](http://stackoverflow.com/faq「這是常見問題的鏈接」),尤其是那些說:「當你決定哪個答案對你最有幫助時,* *通過點擊答案**左側的複選框大綱,將其標記爲接受的答案,這可讓其他人知道您已收到您的問題的良好答案。「 – 2010-08-22 12:26:29