我试图将值分配到我的结构中。但是,我发现了一些困难。我想创建一个包含用户,标题和视图的列表。
我有一个如下所示的结构
struct table{
char *user[50];
char *title[50];
int views;
}
我从文本文件中获取信息,并且我尝试逐行读取文本文件并相应地分配值。
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 **。我想知道是否有人可以帮我向我解释这个问题,或者他们是否可以将我引导到任何地方,我可以得到一些我可以看到的例子。
感谢。
答案 0 :(得分:4)
struct table
没有name
成员user
。
此外,您将user
和title
声明为指针数组,但尝试使用它们来保存字符串,而是使用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++;
}