2014-02-20 105 views
-2

我正在爲我的C編程類的項目工作,該程序從鍵盤或文本文件中接受用戶輸入,然後打印出文件中每個字符的編號。 我已經設法使用stdout將其輸出到控制檯,但當用戶使用「-o」時難以輸出到文件。C程序循環輸入

它不斷給我BADFILENULL)每當我使用./counts apple.txt./counts apple.txt -o appleresults.txt

 if(argv[i] = "-o") 
     { 
      fp = fopen(argv[i+1], "w"); 
      if(fp == 0) 
      { 
       BADFILE(argv[i+1]) 
      } 
     } 
    } 
} 

我認爲它與if(argv[i]="-o")循環做的,但我似乎無法來解決錯誤。

+2

使用'strcmp(argv [i],「-o」)== 0'來比較字符串。 –

+1

相等測試是'==',賦值是'=',字符串只是指針 - 您不能通過測試指針的相等來比較字符串。這些都是C的絕對基礎。也許你需要通過一本關於C的介紹性書籍。 – paddy

+0

好吧。我理解==和=之間的區別,但在閱讀代碼時我錯過了它。 – AppleGate0

回答

2

正如俞灝提到,你的字符串比較是錯誤的(你實際上是分配值"-o"argv[i]

你可能要檢查的argv[i+1]是一個有效的字符串。

我看不到你聲明fp,但我假設它是FILE*

要將輸出寫入文件,請使用fputs(char* , FILE*) 最後,請不要忘記在完成後關閉文件。