在我的程序的一个函数中,我试图将文件中的数据加载到这个结构数组中:
/* database struct */
typedef struct node {
char name[MAX];
char address[MAX];
long int number;
}record_type;
record_type record[100];
功能如下:
/* load database from disk */
void load_database() {
char line[128];
/* Set up database */
database = fopen("database.txt", "r+w+a+");
if(database == NULL) {
printf("\n\tWARNING: No database found.");
exit(1);
}
/* Get database file from disk */
while(fgets(line, sizeof(line), database) != NULL) {
sscanf(line, "%s %s %lu", record[rec_num].name,
record[rec_num].address, &record[rec_num].number);
/* keeps track of array size */
rec_num++;
}
}
我遇到的问题是与 sscanf 不一致。如果我包含名字和姓氏,我不能在它们之间放置空格,或者它将名字放在 name[] 中,将姓氏放在 address[] 中。
这是我尝试输入的数据示例:
1. Name: james manes Address: 220 test addr Number: 5558889999
我需要将“james manes”放入 name[] 字段,将 220 test addr 放入 address[] 字段,将 5558889999 放入结构的 number 字段。这可能吗?
有没有更有效的方法来管理这种类型的输入?