C-テキストファイルから文字列の配列に単語を読み取る方法

etorr96

単語がテキストファイルに表示される回数に単語をマッピングするテーブルを生成するプログラムを作成する必要があります。これまでのところ、私のコードは次のようになっています

#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
struct entry
{
  char* word;
  unsigned int n;
  struct entry *left;
  struct entry *right;
};

struct entry* 
insert(struct entry *table, char *str)
{
  if(table==NULL){
    table = (struct entry*)malloc(sizeof(struct entry));
    table->word = str;
    table->n = 1;
    table->left = NULL;
    table->right = NULL;
  }else if(strcmp(table->word,str)==0){
    table->n=(table->n)+1;
  }else if(strcmp(table->word,str)==1){
    table->left=insert(table->left,str);
  }else{
    table->right = insert(table->right,str);
  }
  return table;
}

void
print_table(struct entry *table)
{
  if(!(table==NULL)){
    print_table(table->left);
    fprintf(stdout,"%s\t %d\n",table->word,table->n);
    print_table(table->right);
  }
}

int
main(int argc, const char *argv[])
{

  struct entry* table = NULL;
  char *str = "foo";
  table =  insert(table,str);
  str = "foo";
  table = insert(table,str); 
  print_table(table);

  return 0;

}

これは出力を与えます

foo 2

私がする必要があるのは、入力ファイルを使ってこれとまったく同じことをすることです。私の考えは、次のようになるテキストファイルのすべての単語を取ることです

This is an example of 
what the text file
will look like.

1行あたりの正確な行数または単語数がわかりません。私が言っていたように、私の考えは、テキストファイルからすべての単語を取得して文字列の配列に入れ、配列内のすべての要素に対して挿入関数を実行することでした。各単語をどのように取得するかがわかりません。そしてそれを配列に入れます。どんな提案も歓迎し、感謝しています。

ジョナサン・レフラー

移植性のバグ

この使用法strcmp()は間違っていることに注意してください

}else if(strcmp(table->word,str)==1){

の定義はstrcmp()、ゼロ未満、ゼロに等しい、またはゼロより大きい値を返すことです。の言及はありません1

常に、しかし常に、0と比較してください:

  • if (strcmp(word, str) == 0)word等しいstr
  • if (strcmp(word, str) != 0)word等しくないstr
  • if (strcmp(word, str) <= 0)word以下str
  • if (strcmp(word, str) >= 0)word以上str
  • if (strcmp(word, str) < 0)word未満str
  • if (strcmp(word, str) > 0)wordより大きいstr

多くの実装でstrcmp()は、からの戻り値は、異なる文字間の数値の差であり、1よりはるかに大きい場合も小さい場合もあります。

言葉を読む

入力が完全に異常ではないと合理的に確信している場合は、このループでバリアントを使用してデータを読み取ることができます。

char buffer[4096];
while (fscanf(fp, "%4095s", buffer) == 1)
{
    char *word = strdup(buffer);
    table = insert(table, word);
}

これは、最大4 KiBの長さの単語を読み取り、関数を使用して各単語をテーブルに格納します。単語が正確に4KiBの長さであるか、それより長い場合、それは断片に分割されます。おそらく問題にはならないでしょう。scanf()ファミリは、空白、タブ、および改行を単語間の区切り文字として扱うことに注意してください"a-z"ファイルへの書き込みは、1つの単語、二重引用符、ダッシュなどとして扱われます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列、整数、フロートをテキストファイルから配列/文字列に読み取るC ++

分類Dev

テキストファイルから列を読み取り、Cで別々の配列に保存する方法は?

分類Dev

テキストファイルからCの配列に数値の配列を読み取ります

分類Dev

C ++テキストファイルから文字列を読み取り、リンクリストに単語ごとに保存します

分類Dev

テキストファイルからCの配列に単語をコピーする方法

分類Dev

C ++基本的なテキストファイルからテキストを読み取り、2つの異なる配列に格納する方法

分類Dev

テキストファイルから読み取り、c#で配列リストに保存する方法は?

分類Dev

テキストファイルから配列/文字列へのC ++の読み取り

分類Dev

C-テキストファイルから文字列を読み取り、サイズ別に配置する

分類Dev

C-テキストファイルから配列への文字列のリストを読み取って処理することはできません

分類Dev

テキストファイルを1行ずつ読み取り、配列に保存する(C言語)

分類Dev

c#でテキストファイルから列を読み取る

分類Dev

Cテキストファイルから配列に数値を読み取り、他の関数に数値を使用する

分類Dev

テキストファイルを読み取り、データを複数の配列に格納するC ++

分類Dev

cのファイルから文字列を読み取る

分類Dev

Cのテキストファイルからchar配列を読み取るためのアドバイスはありますか?

分類Dev

C言語:テキストファイルからの文字列(単語)のBSTを含む配列を実装します

分類Dev

テキストファイルのデータを読み取り、各列に配列を割り当てる方法c ++

分類Dev

C-フォーマットされたテキストファイルから整数の文字列を読み取る

分類Dev

テキストファイルからデータを読み取り、C言語の変数に保存する方法は?

分類Dev

数値のテキストファイルを読み取り、C ++で整数の配列に格納します

分類Dev

C ++のファイルからchar配列(スペースを含む)を読み取る方法

分類Dev

テキストファイルの特定の部分をCの文字列として読み取る?

分類Dev

浮動小数点数を持つテキストファイルをCの浮動小数点配列に読み取る方法

分類Dev

4列のテキストファイルをCの2つのchar配列に読み込む方法は?

分類Dev

文字列の列をテキストファイルから列挙型に解析する方法。C#

分類Dev

テキストファイルの文字列から特定の単語を抽出するにはどうすればよいですか?c ++

分類Dev

cのテキストファイルから行列を読み取る

分類Dev

Cのバイナリファイルから文字列を読み取るときにアクセス違反

Related 関連記事

  1. 1

    文字列、整数、フロートをテキストファイルから配列/文字列に読み取るC ++

  2. 2

    テキストファイルから列を読み取り、Cで別々の配列に保存する方法は?

  3. 3

    テキストファイルからCの配列に数値の配列を読み取ります

  4. 4

    C ++テキストファイルから文字列を読み取り、リンクリストに単語ごとに保存します

  5. 5

    テキストファイルからCの配列に単語をコピーする方法

  6. 6

    C ++基本的なテキストファイルからテキストを読み取り、2つの異なる配列に格納する方法

  7. 7

    テキストファイルから読み取り、c#で配列リストに保存する方法は?

  8. 8

    テキストファイルから配列/文字列へのC ++の読み取り

  9. 9

    C-テキストファイルから文字列を読み取り、サイズ別に配置する

  10. 10

    C-テキストファイルから配列への文字列のリストを読み取って処理することはできません

  11. 11

    テキストファイルを1行ずつ読み取り、配列に保存する(C言語)

  12. 12

    c#でテキストファイルから列を読み取る

  13. 13

    Cテキストファイルから配列に数値を読み取り、他の関数に数値を使用する

  14. 14

    テキストファイルを読み取り、データを複数の配列に格納するC ++

  15. 15

    cのファイルから文字列を読み取る

  16. 16

    Cのテキストファイルからchar配列を読み取るためのアドバイスはありますか?

  17. 17

    C言語:テキストファイルからの文字列(単語)のBSTを含む配列を実装します

  18. 18

    テキストファイルのデータを読み取り、各列に配列を割り当てる方法c ++

  19. 19

    C-フォーマットされたテキストファイルから整数の文字列を読み取る

  20. 20

    テキストファイルからデータを読み取り、C言語の変数に保存する方法は?

  21. 21

    数値のテキストファイルを読み取り、C ++で整数の配列に格納します

  22. 22

    C ++のファイルからchar配列(スペースを含む)を読み取る方法

  23. 23

    テキストファイルの特定の部分をCの文字列として読み取る?

  24. 24

    浮動小数点数を持つテキストファイルをCの浮動小数点配列に読み取る方法

  25. 25

    4列のテキストファイルをCの2つのchar配列に読み込む方法は?

  26. 26

    文字列の列をテキストファイルから列挙型に解析する方法。C#

  27. 27

    テキストファイルの文字列から特定の単語を抽出するにはどうすればよいですか?c ++

  28. 28

    cのテキストファイルから行列を読み取る

  29. 29

    Cのバイナリファイルから文字列を読み取るときにアクセス違反

ホットタグ

アーカイブ