私のプログラムの関数で、ファイルからこの構造体配列にデータをロードしようとしています:
/* 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 との矛盾です。姓と名を含める場合、それらの間にスペースを入れることはできません。または、名を名前 [] に、姓を住所 [] に配置します。
入力しようとしているデータのサンプルを次に示します。
1. Name: james manes Address: 220 test addr Number: 5558889999
"james manes" を name[] フィールドに、220 test addr を address[] フィールドに、5558889999 を構造体の number フィールドに入れる必要があります。これはまったく可能ですか?
このタイプの入力を管理するより効率的な方法はありますか?