2016-08-03 7 views
0

ここに私のコードです。これは現在、テキストファイルを開き、ユーザーの入力に応じて特定の行を出力します。選択した区切り文字(カンマなど)の出現時にその行を区切りたいので、別々の情報(例えば、体重、身長、目の色、名前、年齢など)を得ることができます。どのように私はそれをやって行くだろう(編集イムは、任意のヘルプをラインがプリントアウトを決定するために、テキスト入力を使用しようと灘?)デリミタでテキストの行を分割する方法

 #include<stdio.h> 
#include <string.h> 
#include <stdlib.h> 
    int main() 
    { 
      const char delim[2] = ","; 
      char *token; 
      int j =0; 
      char hh[3]; 
      FILE *ptr_file; 
      char buf[1000]; 
      ptr_file =fopen("input.txt","r"); 
      if (!ptr_file) 
      return 1; 
      char *pt[] = { 
       "H","He","Li","Be","B","C","N","O","F","Ne","Na" 

      }; 
    printf("what element do you want\n"); 
    scanf("%s", &hh); 
    for(j=0; j<= 3; j++) 
    { 
     if(hh == pt[j]) 
     { 
     fgets(buf,1000, ptr_file); 
       token = strtok(buf, delim); 
       while(token != NULL) 
       { 
       printf("%s\n", token); 
       token = strtok(NULL, delim); 
       } 

       break; 
     }else  
     { 
      fgets(buf,1000, ptr_file); 
      continue; 
     } 
    }  
     fclose(ptr_file); 
      return 0; 
    } 
+0

@BLUEPIXYのoohおっと、私はそれを削除します。 –

+0

'strtok()'関数は必要な処理を行います。 –

答えて

1

あなたの文を持っている場合:?「体重、身長、目の色、名前、Age "の場合は、

char * strtok(char * str、const char * delim)関数を次のように使用して、文字列をトークン化してコンマ("、 ")で区切ることができます。

char buf[1000] = "Weight,Height,Eye color,Name,Age"; 
const char delim[2] = ","; 
char *token; 

//This retrieves the first token 
token = strtok(buf, delim); 

while(token != NULL) 
{ 
    printf("%s\n", token); 
    token = strtok(NULL, delim); 
} 

出力:
体重
身長
目の色
名前
年齢

+0

だから私は現在の出力を使用し、これを介して実行する必要がありますか? – John

+0

最初のfgets()がbufを生成した後、whileループの最後に投稿したコードの2行目からコピーし、fgets()呼び出しのもとに置きます。あなたは彼らがあなたが好きなように彼らが動作することを確認する必要があります。次に、区切り文字をforループなどの外側に置いて、コードブロックを最適化する必要があります。 – Sterls

+0

代わりに、パラメータとして文字列と区切り文字を取り、トークンを出力する共有コードで関数を作成できます。コードをクリーンアップする必要があります。 – Sterls

関連する問題