0

構造体に値を割り当てようとしています。しかし、私はいくつかの困難を見つけています。ユーザー、タイトル、ビューを保持するリストを作成したいと思います。

私は以下に示すような構造体を持っています

struct table{
    char *user[50];
    char *title[50];
    int views;
}

テキストファイルから情報を取得し、テキストファイルを1行ずつ読み取り、それに応じて値を割り当てようとしています。

 struct table *tables;
 tables = malloc(50*sizeof(struct table));
 FILE *ptr_file;
 char *name_file="2012-11-05-13-34.txt"; //change this later

 ptr_file=fopen(name_file, "r"); 
 if(!ptr_file)
    printf("Couldn't open file %s for reading.\n", name_file);

 printf("Opened file %s for reading.\n", name_file);

 line_number = 0;
 while(fgets(buffer, sizeof(buffer), ptr_file) != NULL){
    if(strcmp(buffer, "") == 0)
       return 0;
    char *views=strtok(buffer, ",");
    char *name=strtok(NULL, ",");
    char *title=strtok(NULL, ",");
    tables[line_number].views=atoi(views);
    strcpy(tables[line_number].user, user);
    strcpy(tables[line_number].title, title);
    line_number++;
 }

char *_restricted_but引数はタイプchar**のようなエラーが発生します。誰かが私にこれを説明するのを手伝ってくれるのか、それとも私が見ることができるいくつかの例を得ることができる場所に私を導くことができるのかどうか疑問に思いました。

ありがとう。

4

1 に答える 1

4

struct tablenameそのメンバーをnaveしませんuser

また、ポインターの配列として宣言していますがusertitleそれらを使用して文字列を保持しようとし、代わりに char 配列を使用してください。

struct table{
    char user[50];
    char title[50];
    int views;
}

- 編集 -

ポインターの配列を (並べ替えなどのために) 保持したい場合は、文字列を格納するためにそれぞれにメモリを割り当てる必要があります。

 while(fgets(buffer, sizeof(buffer), ptr_file) != NULL){
    if(strcmp(buffer, "") == 0)
       return 0;
    char *views=strtok(buffer, ",");
    char *name=strtok(NULL, ",");
    char *title=strtok(NULL, ",");
    tables[line_number].views=atoi(views);
    tables[line_number].user[0] = strdup(user);  // 
    tables[line_number].title[0] = strdup(title);// 
    line_number++;
 }
于 2012-11-26T06:40:42.097 に答える