2017-10-03 5 views
-1
int main(int argc, char* argv[]) { 
    ifstream ifs(argv[1],ios::in); 

if(argc!=2) { 
    cout << "Please type main.exe and file name to run the program! Please Try Again" << endl; 
} 

ifs.open(argv[1]); 

if (!ifs.is_open()) { 
    cout << "wrong file name! please open again!" << endl; 
} 

char line[80]; 
char *point; 

while(ifs.getline(line,80)) //problem seem to be here 
{ 
    cout << "line =" << line << endl; 
    point = strtok(line, " "); 
     while(point!=NULL) { 
      if (checkdigit(point)) 
       numberofdight++; 
     else if(checkkeyword(point)) 
      keywords++; 
     else { } 
    } 
    cout << point <<endl; 
    point = strtok(NULL, " "); 
    } 
} 
ifs.close(); 

}テキストファイルからテキストを格納しようとが配列C++

プログラムはwhileループ一方(ifs.getline(ライン80))を通過しませんでした。誰か助けてくれますか?プログラミングにはまったく新しいものです。テキストファイルからすべてをarrayに格納するとします。 TIA

+2

ベター 'のstd ::ベクトル'と 'のstd :: getlineの()を使用します' 。また、 'strtok()'は文字列の分割には最適ではありません。 – user0042

+1

あなたのコードを書式化しようとしましたが、中括弧は駄目です。 – user4581301

+0

インデントは、あなたの意図を伝えるために非常に重要です。あなたがそれを修正するために気にすることができない場合、それはひどく反映されます。 – tadman

答えて

0

ここに問題があるようだと言ったところで、私はその周りに答えを出すでしょう。

まず、私はそれがどのように動作するかを理解するためにgetline() APIについて読むことをお勧めします。これは、より長く実行するのに役立ちます。 (あなたが言及しているので、あなたが新しいです)限りAPIの利用が行くよう

... while(ifs.getline(line,80))

  1. ファイルがifs.eof()を使用して空でない場合は、確認することができます。これについてはAPIを参照してください。
  2. 行が80文字を超える場合は、ループもスキップされます。

あなたのコントロールが中に入っていない理由は、Debugの2つの可能性があり、実際の理由が分かります。それでも解決しない場合は、読んでいるファイルを置いてください。

EDIT:あなたのファイルでこのコードを試してください。あなたの参照のための作業コード。

NOTE(問題文のコードからインスピレーションを得た):それらを使用する前に、約すべてのAPIを読むこと

#include<iostream> 
#include<fstream> 

int main(int argc, char* argv[]) { 
    ifstream ifs; 

    if(argc!=2) { 
     std::cout << "Please type main.exe and file name to run the program! Please Try Again" << std::endl; 
    } 

    ifs.open(argv[1], std::ifstream::in); 

    if (!ifs.is_open()) { 
     cout << "wrong file name! please open again!" << endl; 
    } 

    char line[80]; 
    char *point; //NOT needed for my samplecode, have just kept from your code 

    while(ifs.getline(line,80)) //problem seem to be here 
    { 
     cout << "line =" << line << endl; 
     //TODO:: Write your business logic here. 
    } 

    ifs.close(); 
} 
+0

私が読もうとしているテキストファイルは、ほんの少しの単語を含むサンプルテキストファイルです。例、どうですか?こんにちは世界。 –

+0

私が編集したコードをチェックしてください。(作業コピー) Apple LLVMバージョン9.0.0(clang-900.0.37)コンパイラを使用しました。FYI – spt025

+0

ありがとうございます。私は本当にそれを感謝します。私は後で試してみる。私は後であなたに知らせます。 –