#4
by あたっしゅ » 3年前
東上☆海美☆「
ちょっと、やってみたが
コード:
//
// https://dixq.net/forum/viewtopic.php?f=3&t=21162&sid=1c559273d5b444ad2c10b379b18332e0
// リスト構造体ポインタにcsvファイルを読み込みたい - ミクプラ(ja)
//
// for VS2019
//
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NAME_LEM_MAX 10
#define ADDRESS_LEM_MAX 64
#define BIRTH_LEM_MAX 10
#define NUMBER_LEM_MAX 16
#define NO_PROBLEM 0
#define ERROR 1
typedef struct student
{
char id;
char name[NAME_LEM_MAX + 1];
char address[ADDRESS_LEM_MAX + 1];
char birth[BIRTH_LEM_MAX + 1];
char phone_number[NUMBER_LEM_MAX + 1];
struct student* next; // 次のデータがある場所
} PERSON_t;
static PERSON_t* head = NULL; // リストの先頭 ノードが存在するアドレス
static PERSON_t* tail = NULL; // リストの末尾
//int add_person(int id);
//int delete_person(void);
//int change_person(void);
//int save_person(void);
int read_person(void);
//void person_result(void);
//void get_string(char* str, unsigned int num);
//int get_person_id(PERSON_t* p);
//int get_person_name(PERSON_t* p);
//int get_person_address(PERSON_t* p);
//int get_person_birth(PERSON_t* p);
//int get_person_phone_number(PERSON_t* p);
int
main(void)
{
int number = 0;
int id = 0;
int ret;
int end_flag = 0;
//enum select;
PERSON_t* current, * data;
FILE* fp;
#if 0
while (end_flag == 0)
{
printf("---------------------------------------------\n");
printf("1.一覧\n2.一件表示\n3.追加入力\n4.変更\n5.削除\n11.保存\n12.読み込み\n0.終了\n ");
scanf("%d", &number);
fflush(stdin);
switch (number) {
case 1:
person_result();
break;
case 2:
person_result();
break;
case 3:
id++;
ret = add_person(id);
if (ret == NO_PROBLEM) {
puts("追加完了");
}
break;
case 4:
ret = change_person();
if (ret == NO_PROBLEM) {
puts("変更完了");
}
break;
case 5:
ret = delete_person();
if (ret == NO_PROBLEM) {
puts("削除完了");
}
break;
case 11:
puts("保存");
puts("-------------\n");
ret = save_person();
if (ret == NO_PROBLEM) {
puts("保存完了");
}
break;
case 12:
#endif
puts("読み込み");
puts("-------------\n");
ret = read_person();
if (ret == NO_PROBLEM) {
puts("読み込み完了");
}
#if 0
break;
case 0:
puts("終");
end_flag = 1;
break;
default:
//何もしない
break;
}
}
#endif
return 0;
}
int
read_person(void)
{
int ret = NO_PROBLEM;
PERSON_t* data;
FILE* fp; //file型構造体
//free(data);
fp = fopen("test.txt", "r"); //読み込みモードファイルをで開く
if (fp == NULL) {
perror("失敗\n");
return ERROR;
}
else {
puts("成功\n");
}
data = (PERSON_t*)malloc(sizeof(PERSON_t));
//
// http://simd.jugem.jp/?eid=49
// C言語 CSVファイルの読み込み - stdio.h - [ fscanf ] - 勇躍のゴミ箱(ja)
//
//fscanf(fp, "%d%s%s%s%s", &data->id, data->name, data->address, data->birth, data->phone_number);
char id[ 256 ];
fscanf(fp, "%[^,],%s,%[^,],%s,%[^,],%s,%[^,],%s,%[^,],%s\n", &id, data->name, data->address, data->birth, data->phone_number);
//printf(" %d\n %s\n %s\n %s\n %s\n", &data->id, data->name, data->address, data->birth, data->phone_number);
printf(" %s\n %s\n %s\n %s\n %s\n", &id, data->name, data->address, data->birth, data->phone_number);
return ret;
}
// end.
出力
コード:
読み込み
-------------
成功
"ID"
"名前",
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����5
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����5
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����5
読み込み完了
駄目だったみみ
」
東上☆海美☆「
ちょっと、やってみたが
[code]
//
// https://dixq.net/forum/viewtopic.php?f=3&t=21162&sid=1c559273d5b444ad2c10b379b18332e0
// リスト構造体ポインタにcsvファイルを読み込みたい - ミクプラ(ja)
//
// for VS2019
//
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NAME_LEM_MAX 10
#define ADDRESS_LEM_MAX 64
#define BIRTH_LEM_MAX 10
#define NUMBER_LEM_MAX 16
#define NO_PROBLEM 0
#define ERROR 1
typedef struct student
{
char id;
char name[NAME_LEM_MAX + 1];
char address[ADDRESS_LEM_MAX + 1];
char birth[BIRTH_LEM_MAX + 1];
char phone_number[NUMBER_LEM_MAX + 1];
struct student* next; // 次のデータがある場所
} PERSON_t;
static PERSON_t* head = NULL; // リストの先頭 ノードが存在するアドレス
static PERSON_t* tail = NULL; // リストの末尾
//int add_person(int id);
//int delete_person(void);
//int change_person(void);
//int save_person(void);
int read_person(void);
//void person_result(void);
//void get_string(char* str, unsigned int num);
//int get_person_id(PERSON_t* p);
//int get_person_name(PERSON_t* p);
//int get_person_address(PERSON_t* p);
//int get_person_birth(PERSON_t* p);
//int get_person_phone_number(PERSON_t* p);
int
main(void)
{
int number = 0;
int id = 0;
int ret;
int end_flag = 0;
//enum select;
PERSON_t* current, * data;
FILE* fp;
#if 0
while (end_flag == 0)
{
printf("---------------------------------------------\n");
printf("1.一覧\n2.一件表示\n3.追加入力\n4.変更\n5.削除\n11.保存\n12.読み込み\n0.終了\n ");
scanf("%d", &number);
fflush(stdin);
switch (number) {
case 1:
person_result();
break;
case 2:
person_result();
break;
case 3:
id++;
ret = add_person(id);
if (ret == NO_PROBLEM) {
puts("追加完了");
}
break;
case 4:
ret = change_person();
if (ret == NO_PROBLEM) {
puts("変更完了");
}
break;
case 5:
ret = delete_person();
if (ret == NO_PROBLEM) {
puts("削除完了");
}
break;
case 11:
puts("保存");
puts("-------------\n");
ret = save_person();
if (ret == NO_PROBLEM) {
puts("保存完了");
}
break;
case 12:
#endif
puts("読み込み");
puts("-------------\n");
ret = read_person();
if (ret == NO_PROBLEM) {
puts("読み込み完了");
}
#if 0
break;
case 0:
puts("終");
end_flag = 1;
break;
default:
//何もしない
break;
}
}
#endif
return 0;
}
int
read_person(void)
{
int ret = NO_PROBLEM;
PERSON_t* data;
FILE* fp; //file型構造体
//free(data);
fp = fopen("test.txt", "r"); //読み込みモードファイルをで開く
if (fp == NULL) {
perror("失敗\n");
return ERROR;
}
else {
puts("成功\n");
}
data = (PERSON_t*)malloc(sizeof(PERSON_t));
//
// http://simd.jugem.jp/?eid=49
// C言語 CSVファイルの読み込み - stdio.h - [ fscanf ] - 勇躍のゴミ箱(ja)
//
//fscanf(fp, "%d%s%s%s%s", &data->id, data->name, data->address, data->birth, data->phone_number);
char id[ 256 ];
fscanf(fp, "%[^,],%s,%[^,],%s,%[^,],%s,%[^,],%s,%[^,],%s\n", &id, data->name, data->address, data->birth, data->phone_number);
//printf(" %d\n %s\n %s\n %s\n %s\n", &data->id, data->name, data->address, data->birth, data->phone_number);
printf(" %s\n %s\n %s\n %s\n %s\n", &id, data->name, data->address, data->birth, data->phone_number);
return ret;
}
// end.
[/code]
出力
[code]
読み込み
-------------
成功
"ID"
"名前",
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����5
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����5
ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ����5
読み込み完了
[/code]
駄目だったみみ
」