2016-11-29 15 views
1

我希望函數fopen的文件名參數是一個動態變量,它爲我的ftp服務器提供一個ftp客戶端輸入。我在這個論壇和谷歌上都嘗試了很多不同的方式,但「文件名」仍然不會被fopen識別。C fopen文件名參數作爲動態變量

else if (strncmp(client->input, "retr", 4) == 0) { 

      char fname[1024]; 
      // COMMAND LINE: retr filePATHNAME thats why +5  
      strcpy(fname, client->input+5); 

     if(fopen(fname, "r") != NULL) { 
     ... 

如果我把的fopen(「/酒吧/的test.txt」,「R」),它的工作原理,因此有什麼用空格或報價或類型做。

但如果我嘗試用RETR /pub/test.txt甚至RETR「/pub/test.txt」做客戶端的命令行上的fopen不工作,也不會打開該文件。

一直停留在這個時間最長的,任何幫助表示讚賞。

謝謝

+2

請儘量提供[MCVE。 –

+3

我建議你記錄你的服務器試圖打開的文件名。這可能不是你的想法。一定要使用日誌格式,顯示尾隨空白/換行符,因爲這些附加字符的存在是更可能的問題之一。 –

+0

@JohnBollinger我新來C和所有這些東西,所以我不知道如何記錄它。我試過打印fname給出的內容,而且它只是打印我正在輸入的內容。 – pkmangg

回答

1

我找到了答案。

感謝@ user3386109的提示。

我基本上清除所有的空間,新線輸入

strtok(client->input+5,"\r\n\t");