teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

 投稿者
  題名
  内容 入力補助画像・ファイル<IMG>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]

スレッド一覧

  1. 全力全開(0)
  2. ぽろりっ(0)
  3. 足あと帳(0)
スレッド一覧(全3)  他のスレッドを探す 

*掲示板をお持ちでない方へ、まずは掲示板を作成しましょう。無料掲示板作成


検索 完成

 投稿者:ushimi  投稿日:2011年 6月13日(月)19時17分50秒
返信・引用
  #include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#define BUFFER_SIZE (256)

struct list{
  int ID;
  char name[BUFFER_SIZE];
  char mailadd[BUFFER_SIZE];
  int sex;
  int n;
  int groupID;
  struct list *next;
};

void search( struct list *list, int element_num );

int main(void)
{
  int count=0;
  struct list *list, *a;
  FILE* fp;

  //テキスト読み込み
  if ((fp = fopen("csv.txt", "r")) == NULL) {
    printf("file open error!!\n");
    exit(EXIT_FAILURE); /* (3)エラーの場合は通常、異常終了する */
  }

  list = (struct list*)malloc(sizeof(struct list));

  a=list;

  while( fscanf( fp ,"%d,%[^,],%[^,],%d,%d,%d", &a->ID, a->name, a->mailadd, &a->sex, &a->n, &a->groupID ) != EOF )
    {
      a->next = (struct list*)malloc(sizeof(struct list));
      a=a->next;
      count++;
    }

  fclose( fp );

  search( list, count ); //引数はlist構造のデータの先頭アドレスと要素数

  while( a->next != NULL )
    {
      free( a->next );
      a=a->next;
    }

}

//検索のための関数
void search( struct list *list, int element_num )
{
  int i, count=0, Data_Type=0, num;
  struct list *a=list;
  char search[BUFFER_SIZE];
  char buf[BUFFER_SIZE]; // fgets()のバッファとなるメモリ領域を用意

  printf("どのデータで検索を行いますか?\n(ID:1 名前:2 メールアドレス:3 性別:4 脈:5 グループID:6)\n");

  //範囲外の数が入力された場合、再度入力を促す
  do {
    printf(": "); //入力を要求するときに何を入力するかを表示している部分

    fgets(buf, BUFFER_SIZE, stdin);         /* キーボードから文字列を入力する */
    Data_Type = atoi(buf);    //int型変数に、入力された整数を代入している部分

    if( Data_Type>6 || Data_Type<=0 ) printf("入力が間違っています。\n");
  } while( Data_Type>6 || Data_Type<=0 );


  switch( Data_Type ){
    //IDでの検索
  case 1:
    printf("検索(ID): "); //入力を要求するときに何を入力するかを表示している部分

    fgets(buf, BUFFER_SIZE, stdin);         /* キーボードから文字列を入力する */
    num = atoi(buf);    //int型変数に、入力された整数を代入している部分

    printf("\nID,名前,メールアドレス,性別,脈,グループID\n");

    for( i=0;i<element_num;i++ )
      {
if( num==a->ID )
  {
    printf("%d,%s,%s", a->ID, a->name, a->mailadd);

    if( a->sex==1 ) printf(",男");
    else if( a->sex==2 ) printf(",女");
    else if( a->sex==3 ) printf(",?");

    if( a->n==1 ) printf(",脈あり");
    else if( a->n==2 ) printf(",脈なし");

    printf(",%d\n", a->groupID);
    count++;
  }
a=a->next;
      }
    printf("\n");

    if( count==0 ) printf("該当するデータはありませんでした。\n");
    else printf("以上の%d件が該当しました。\n", count);
    break;

    //名前での検索
  case 2:
    printf("検索(名前)(部分一致検索可): ");

    while ((search[count] = getchar(  )) != '\n') count++;//while文を使用して1文字入力を繰り返し,改行コードの入力をループ終了判定条件に用いている
    count=0;
    while (search[count] != '\0')
      { /* strを先頭から順に調べる */
if (search[count]=='\n') search[count]='\0'; /* 改行文字があれば終端文字に変える */
count++;
      }

    printf("\nID,名前,メールアドレス,性別,脈,グループID\n");

    count=0;
    for( i=0;i<element_num;i++ )
      {
if( strstr(a->name,search) != NULL )
  {
    printf("%d,%s,%s", a->ID, a->name, a->mailadd);

    if( a->sex==1 ) printf(",男");
    else if( a->sex==2 ) printf(",女");
    else if( a->sex==3 ) printf(",?");

    if( a->n==1 ) printf(",脈あり");
    else if( a->n==2 ) printf(",脈なし");

    printf(",%d\n", a->groupID);
    count++;
  }
a=a->next;
      }
    printf("\n");

    if( count==0 ) printf("該当するデータはありませんでした。\n");
    else printf("以上の%d件が該当しました。\n", count);
    break;

    //メールアドレスでの検索
  case 3:
    printf("検索(メールアドレス)(部分一致検索可): ");

    while ((search[count] = getchar(  )) != '\n') count++;//while文を使用して1文字入力を繰り返し,改行コードの入力をループ終了判定条件に用いている
    count=0;
    while (search[count] != '\0')
      { /* strを先頭から順に調べる */
if (search[count]=='\n') search[count]='\0'; /* 改行文字があれば終端文字に変える */
count++;
      }

    printf("\nID,名前,メールアドレス,性別,脈,グループID\n");

    count=0;
    for( i=0;i<element_num;i++ )
      {
if( strstr(a->mailadd,search) != NULL )
  {
    printf("%d,%s,%s", a->ID, a->name, a->mailadd);

    if( a->sex==1 ) printf(",男");
    else if( a->sex==2 ) printf(",女");
    else if( a->sex==3 ) printf(",?");

    if( a->n==1 ) printf(",脈あり");
    else if( a->n==2 ) printf(",脈なし");

    printf(",%d\n", a->groupID);
    count++;
  }
a=a->next;
      }
    printf("\n");

    if( count==0 ) printf("該当するデータはありませんでした。\n");
    else printf("以上の%d件が該当しました。\n", count);
    break;

    //性別での検索
  case 4:
    //範囲外の数が入力された場合、再度入力を促す
    do {
      printf("検索(性別)(男:1 女:2 ?:3): "); //入力を要求するときに何を入力するかを表示している部分

      fgets(buf, BUFFER_SIZE, stdin);         /* キーボードから文字列を入力する */
      num = atoi(buf);    //int型変数に、入力された整数を代入している部分

      if( num>3 || num<=0 ) printf("入力された数は範囲外です。\n");
    } while( num>3 || num<=0 );

    printf("\nID,名前,メールアドレス,性別,脈,グループID\n");

    for( i=0;i<element_num;i++ )
      {
if( num==a->sex )
  {
    printf("%d,%s,%s", a->ID, a->name, a->mailadd);

    if( a->sex==1 ) printf(",男");
    else if( a->sex==2 ) printf(",女");
    else if( a->sex==3 ) printf(",?");

    if( a->n==1 ) printf(",脈あり");
    else if( a->n==2 ) printf(",脈なし");

    printf(",%d\n", a->groupID);
    count++;
  }
a=a->next;
      }
    printf("\n");

    if( count==0 ) printf("該当するデータはありませんでした。\n");
    else printf("以上の%d件が該当しました。\n", count);
    break;

    //脈での検索
  case 5:
    //範囲外の数が入力された場合、再度入力を促す
    do {
      printf("\n検索(脈)(あり:1 なし:2): "); //入力を要求するときに何を入力するかを表示している部分

      fgets(buf, BUFFER_SIZE, stdin);         /* キーボードから文字列を入力する */
      num = atoi(buf);    //int型変数に、入力された整数を代入している部分

      if( num>2 || num<=0 ) printf("入力された数は範囲外です。\n");
    } while( num>2 || num<=0 );

    printf("\nID,名前,メールアドレス,性別,脈,グループID\n");

    for( i=0;i<element_num;i++ )
      {
if( num==a->n )
  {
    printf("%d,%s,%s", a->ID, a->name, a->mailadd);

    if( a->sex==1 ) printf(",男");
    else if( a->sex==2 ) printf(",女");
    else if( a->sex==3 ) printf(",?");

    if( a->n==1 ) printf(",脈あり");
    else if( a->n==2 ) printf(",脈なし");

    printf(",%d\n", a->groupID);
    count++;
  }
a=a->next;
      }
    printf("\n");

    if( count==0 ) printf("該当するデータはありませんでした。\n");
    else printf("以上の%d件が該当しました。\n", count);
    break;

    //グループIDでの検索
  case 6:
    printf("検索(グループID): "); //入力を要求するときに何を入力するかを表示している部分

    fgets(buf, BUFFER_SIZE, stdin);         /* キーボードから文字列を入力する */
    num = atoi(buf);    //int型変数に、入力された整数を代入している部分

    printf("\nID,名前,メールアドレス,性別,脈,グループID\n");

    for( i=0;i<element_num;i++ )
      {
if( num==a->groupID )
  {
    printf("%d,%s,%s", a->ID, a->name, a->mailadd);

    if( a->sex==1 ) printf(",男");
    else if( a->sex==2 ) printf(",女");
    else if( a->sex==3 ) printf(",?");

    if( a->n==1 ) printf(",脈あり");
    else if( a->n==2 ) printf(",脈なし");

    printf(",%d\n", a->groupID);
    count++;
  }
a=a->next;
      }
    printf("\n");

    if( count==0 ) printf("該当するデータはありませんでした。\n");
    else printf("以上の%d件が該当しました。\n", count);
    break;
  }
}
 
 

ファイル読み込み及びグループIDサーチ

 投稿者:kataoka  投稿日:2011年 6月 8日(水)15時59分41秒
返信・引用
  #include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct data{
  int id;
  char name[50];
  char mail[100];
  int sex;
  int myaku;
  int group_id;
  struct data *next;
};

struct data *insert_file(struct data *top,FILE *fp,int *num);//ファイル読み込み関数
void print_group_id(struct data *top);//グループIDでサーチ
void print_file(struct data *top);//表示するだけ


int main(void)
{
  FILE *fp;
  int num=0;
  struct data *top;
  top=(struct data *)malloc(sizeof(struct data));
  top = NULL;

  if(( fp = fopen("data.csv","r"))==NULL){ // 入力ファイルのオープン
    printf("ファイルが見つかりません。--- data.csv\n"); // エラー処理
    exit( EXIT_FAILURE);
  }

  top= insert_file(top,fp,&num);//ファイル読み込み

  print_group_id(top);//グループIDサーチ

  print_file(top); //全データ表示
  printf("要素数:%d\n",num);//要素数表示
  fclose(fp);

  return 0;

}


/*ファイル読み込み関数*/
struct data *insert_file(struct data *top,FILE *fp,int *num){

  struct data *new;

  new=(struct data *)malloc(sizeof(struct data));

  while( fscanf(fp,"%d,%[^,],%[^,],%d,%d,%d",&new->id,new->name,new->mail,&new->sex,&new->myaku,&new->group_id)!=EOF){

    new->next=top;
    top=new;
    (*num)++;
    new=(struct data *)malloc(sizeof(struct data));
    }

  return top;
}

/*グループIDでサーチし表示*/
void print_group_id(struct data *top){
  int G_ID;
  printf("グループID:");
  scanf("%d",&G_ID);

  for(top;top!=NULL;top=top->next){
    if(top->group_id==G_ID){
      printf("%d,%s,%s",top->id,top->name,top->mail);
      if(top->sex==1){
printf("男,");
      }
      else{
printf("女,");
      }

      if(top->myaku==1){
printf("脈あり,");
      }
      else{
printf("脈なし,");
      }
      printf("%d\n",top->group_id);
    }
  }
  return;
}

/*全データ表示*/
void print_file(struct data *top){
  printf("全データ\n");

  for(top;top!=NULL;top=top->next){
    printf("%d,%s,%s",top->id,top->name,top->mail);
    if(top->sex==1){
      printf("男,");
    }
    else{
      printf("女,");
    }

    if(top->myaku==1){
      printf("脈あり,");
    }
    else{
      printf("脈なし,");
    }
    printf("%d\n",top->group_id);
    }

  return;
}

 

データ更新の関数

 投稿者:中村(暁)  投稿日:2011年 6月 8日(水)15時51分56秒
返信・引用
  #include<stdio.h>
#include<stdlib.h>

#define Filename "data.csv"


struct data{
  int ID;
  char name[256];
  char mailaddress[256];
  int gender;
  int myaku;
  int groupID;
  struct data *next;
};


void update(struct data *data,struct data *top);

int main(){

  struct data *data;
  struct data *top;
  struct data *p;
   FILE *fp;


  fp = fopen(Filename,"r");
  //エラー処理
  if(fp == NULL){
    printf("ファイル%sが開けません\n", Filename);
    exit(1);
  }

  p = (struct data*)malloc(sizeof(struct data));
  data = p;
  top = data;
  while(fscanf(fp,"%d,%[^,],%[^,],%d,%d,%d", &data->ID, data->name, data->mailaddress, &data->gender, &data->myaku, &data->groupID)!=EOF){
    p = (struct data*)malloc(sizeof(struct data));
    data->next = p;
    data = p;
  }

  fclose(fp);

  update(data,top);  //データとデータの先頭を渡す

  return 0;
}


void update(struct data *data,struct data *top){
  FILE *fp;
  int number;
  int i;
  int idcount =0;
  struct data *top2;

  top2 = top;

  //データ数のカウント
  while(top2->ID != '\0'){
    idcount++;
    top2=top2->next;
  }


  fp = fopen(Filename,"w");
  //エラー処理
  if(fp == NULL){
    printf("ファイル%sが開けません\n", Filename);
    exit(1);
  }


  printf("変更したい人のIDを入力してください(現在 1~%d のIDが登録されています): ID=",idcount);
  scanf("%d",&number);

  if(0<number && number<=idcount){

   data = top;

    for(i=1; i<number; i++){
      data = data->next;
    }

    printf("1.名前:%s\n", data->name);
    printf("2.メールアドレス:%s\n", data->mailaddress);
    printf("3.性別:%d\n", data->gender);
    printf("4.脈:%d\n", data->myaku);
    printf("5.グループID:%d\n", data->groupID);
    printf("変更したい情報の番号を入力してください:");

    scanf("%d",&number);

    if(number==1){
      printf("新しい名前を入力してください:\n");
      scanf("%s",data->name);
    }
    else if(number==2){
      printf("新しいメールアドレスを入力してください:\n");
      scanf("%s",data->mailaddress);
    }
    else if(number==3){
      printf("新しい性別を入力してください  (1.男  2.女):\n");
      scanf("%d",&(data->gender));
    }
    else if(number==4){
      printf("番号を選択してください  (1.脈あり  2.脈なし):\n");
      scanf("%d",&(data->myaku));
    }
    else if(number==5){
      printf("新しいグループIDを入力してください:\n");
      scanf("%d",&(data->groupID));
    }

    else{
      printf("この番号は無効です\n");
      for(i=0; i<idcount; i++){
fprintf(fp,"%d,%s,%s,%d,%d,%d\n",top->ID,top->name,top->mailaddress,top->gender,top->myaku,top->groupID);
top = top->next;
      }
      fclose(fp);
      return;
    }
  }
  else{
    printf("このIDは存在しません\n");
    for(i=0; i<idcount; i++){
      fprintf(fp,"%d,%s,%s,%d,%d,%d\n",top->ID,top->name,top->mailaddress,top->gender,top->myaku,top->groupID);
      top = top->next;
    }

    fclose(fp);
    return;
  }

  //データをファイルに出力
  for(i=0; i<idcount; i++){
    fprintf(fp,"%d,%s,%s,%d,%d,%d\n",top->ID,top->name,top->mailaddress,top->gender,top->myaku,top->groupID);
    top = top->next;
  }

  printf("変更が完了しました\n");

  fclose(fp);
  return;
}
 

表示に関して

 投稿者:石川バロス  投稿日:2011年 6月 8日(水)15時39分3秒
返信・引用
  #include <stdio.h>
#include <stdlib.h>



struct list
{
  int ID;
  char name[256];
  char mailadd[256];
  int sex;
  int n;
  int groupID;
  struct list *next;
};

//読み込まれたリストの頭と、要素数をもらいらい。
//引数: ListHead 先頭ポインタ count 要素数

void Display(struct list* ListHead, int count)
{
  struct list *now;
  int a=0;
  //newで新しい構造体(リスト)を宣言.

  now = ListHead;

   //sex 1:男性 2:女性  n 1:脈あり 2:脈なし

  for(a=0;a<count;a++)
    {

      if(now->sex == 1 && now->n == 1)
{
  printf("%d %s %s 男性 脈あり %d\n", now->ID, now->name, now->mailadd, now->groupID);
  now = now->next;
}

      else if(now->sex == 2 && now->n == 2)
{
  printf("%d %s %s 女性 脈なし %d\n", now->ID, now->name, now->mailadd, now->groupID);
  now = now->next;
}


      else if(now->sex == 1 && now->n == 2)
{
  printf("%d %s %s 男性 脈なし %d\n", now->ID, now->name, now->mailadd, now->groupID);
  now = now->next;
}

      else if(now->sex == 2 && now->n == 1)
{
  printf("%d %s %s 女性 脈あり %d\n", now->ID, now->name, now->mailadd, now->groupID);
  now = now->next;
      }

    }
}

int main(void)
{
  FILE* fp;
  int count=0;
  struct list *new,*hey,*ListHead ;
  //_________________________________error処理_________________________________________________
  if( (fp = fopen("add.csv","r")) == NULL) {
    printf("file open error!!\n");
    exit(EXIT_FAILURE);
  }

  //_________________________________________________________________________________________

  new = (struct list*)malloc(sizeof(struct list));
  hey = new;
  ListHead=hey;

  //newで新しい構造体(リスト)を宣言.
  //現在編集中のリストを新しく宣言した構造体に変更.

  //_________________データのコピーと表示______________________________________________________
  while ( fscanf( fp , "%d,%[^,],%[^,],%d,%d,%d",&hey->ID, hey->name, hey->mailadd, &hey->sex, &hey->n, &hey->groupID) != EOF)
    {
      new = (struct list*)malloc(sizeof(struct list));

      printf("%d %s %s %d %d %d\n", hey->ID, hey->name, hey->mailadd, hey->sex,  hey->n, hey->groupID);
      hey->next = new;//リスト構造を表現.
      hey = new;
      count++;
    }

  printf("要素数は%d\n",count);

  Display(ListHead, count);

  fclose(fp);
  return 0;
}


 

アルファベットソート完成品(コメント付加)

 投稿者:中村(友)  投稿日:2011年 6月 8日(水)15時11分8秒
返信・引用
  #include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct detabase{
  int ID;
  char namae[256];
  char meruado[256];
  int seibetu;
  int myaku;
  int groupID;
};

void sort_alphabet(int num,struct detabase *meibo)
{

  int i,j;
  struct detabase temp;

  for (i = 0; i < num - 1; i++){
    for(j = i + 1; j < num; j++){
      if ((strcmp(meibo[j].namae, meibo[i].namae)) < 0){
temp = meibo[i];
meibo[i] = meibo[j];
meibo[j] = temp;
      }
    }
  }

  for (i = 0; i < num; i++)printf( "%d %s %s %d %d %d\n", meibo[i].ID, meibo[i].namae, meibo[i].meruado, meibo[i].seibetu, meibo[i].myaku, meibo[i].groupID );

};

int main(void)
{
  FILE *fp;
  char *fname = "csvファイル.csv";
  struct detabase *meibo;
  int ret,num = 0;

  fp = fopen( fname, "r" );

  meibo = (struct detabase *)malloc( sizeof(struct detabase));

  while( ( ret = fscanf( fp, "%d,%[^,],%[^,],%d,%d,%d", &meibo[num].ID, meibo[num].namae, meibo[num].meruado, &meibo[num].seibetu, &meibo[num].myaku, &meibo[num].groupID ) ) != EOF )num++;

  sort_alphabet(num,meibo);//(今のデータベースの人数,構造体データ)

  fclose( fp );

  return 0;
}
 

アルファベットソート完成品

 投稿者:中村(友)  投稿日:2011年 6月 8日(水)15時01分35秒
返信・引用
  #include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct detabase{
  int ID;
  char namae[256];
  char meruado[256];
  int seibetu;
  int myaku;
  int groupID;
};

void sort_alphabet(int num,struct detabase *meibo)
{

  int i,j;
  struct detabase temp;

  for (i = 0; i < num - 1; i++){
    for(j = i + 1; j < num; j++){
      if ((strcmp(meibo[j].namae, meibo[i].namae)) < 0){
temp = meibo[i];
meibo[i] = meibo[j];
meibo[j] = temp;
      }
    }
  }

  for (i = 0; i < num; i++)printf( "%d %s %s %d %d %d\n", meibo[i].ID, meibo[i].namae, meibo[i].meruado, meibo[i].seibetu, meibo[i].myaku, meibo[i].groupID );

};

int main(void)
{
  FILE *fp;
  char *fname = "csvファイル.csv";
  struct detabase *meibo;
  int ret,num = 0;

  fp = fopen( fname, "r" );

  meibo = (struct detabase *)malloc( sizeof(struct detabase));

  while( ( ret = fscanf( fp, "%d,%[^,],%[^,],%d,%d,%d", &meibo[num].ID, meibo[num].namae, meibo[num].meruado, &meibo[num].seibetu, &meibo[num].myaku, &meibo[num].groupID ) ) != EOF )num++;

  sort_alphabet(num,meibo);

  fclose( fp );

  return 0;
}
 

関数化について

 投稿者:バッチー  投稿日:2011年 6月 7日(火)17時52分0秒
返信・引用
  今週は、関数化をやってもらいます。
本当は自分がmain文を作ろうと思いましたが、なんと片岡くんがmain文作ってくれていたので、関数化して動くようにしてください

具体的な変更点
・main文でファイルの読み込みを行うので、各関数でファイルの読み込みを
 勝手におこなわないでください。(fscanfを使わないように)


ついでに片岡くんには特別にファイルの読み込みのみを行う関数を作って下さい
 

完成

 投稿者:ushimi  投稿日:2011年 6月 6日(月)13時51分19秒
返信・引用
  #include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#define BUFFER_SIZE (256)

struct list{
  int ID;
  char name[BUFFER_SIZE];
  char mailadd[BUFFER_SIZE];
  int sex;
  int n;
  int groupID;
  struct list *next;
};

int main(void)
{
  int i, count1=0, count2=0;
  struct list *list, *a;
  FILE* fp;

  char search[BUFFER_SIZE];
  char *result;

  //テキスト読み込み
  if ((fp = fopen("csv.txt", "r")) == NULL) {
    printf("file open error!!\n");
    exit(EXIT_FAILURE); /* (3)エラーの場合は通常、異常終了する */
  }

  list = (struct list*)malloc(sizeof(struct list));

  a=list;

  while( fscanf( fp ,"%d,%[^,],%[^,],%d,%d,%d", &a->ID, a->name, a->mailadd, &a->sex, &a->n, &a->groupID ) != EOF )
    {
      a->next = (struct list*)malloc(sizeof(struct list));
      a=a->next;
      count1++;
    }

  fclose( fp );

  //検索
  printf("検索(名前): ");

  while ((search[count2] = getchar(  )) != '\n') count2++;//while文を使用して1文字入力を繰り返し,改行コードの入力をループ終了判定条件に用いている
  count2=0;
  while (search[count2] != '\0')
    { /* strを先頭から順に調べる */
      if (search[count2]=='\n') search[count2]='\0'; /* 改行文字があれば終端文字に変える */
      count2++;
    }

  count2=0;

  a=list;

  for( i=0;i<count1;i++ )
    {
      if( strstr(a->name,search) != NULL )
{
  printf("%d,%s,%s,%d,%d,%d\n", a->ID, a->name, a->mailadd, a->sex, a->n, a->groupID);
  count2++;
}
      a=a->next;
    }

  if( count2==0 ) printf("該当するデータはありませんでした。\n");
  else printf("以上の%d件が該当しました。\n", count2);

  while( a->next != NULL )
    {
      free( a->next );
      a=a->next;
    }
}
 

完成

 投稿者:リンダ  投稿日:2011年 6月 1日(水)18時08分41秒
返信・引用
  #include <stdlib.h>
#include <string.h>
#include <stdlib.h>

struct Data{
  int id;
  char name[50];
  char mail[100];
  int gender;
  int myaku;
  int gid;
  struct Data *next;
};

int main(void)
{
  FILE *fp;
  struct Data *new;
  fp = fopen( "test.csv", "a" );//読み込み追加モード
  if( fp == NULL ){//ファイルがない場合のif文
    puts( "ファイルが開けません" );
    return 1;
  }
  new = (struct Data*)malloc(sizeof(struct Data));
  printf("IDを入力してください\n");//IDの入力
  scanf("%d",& new->id);
  fprintf(fp,"%d",new->id);
  printf("名前を入力してください\n");//名前の入力
  scanf("%s",new->name);
  fprintf(fp,",%s",new->name);
  printf("メルアドを入力してください\n");//メルアドの入力
  scanf("%s",new->mail);
  fprintf(fp,",%s",new->mail);
  printf("性別を入力してください(1:男 0:女)\n");//性別の入力
  scanf("%d",& new->gender);
  fprintf(fp,",%d",new->gender);
  printf("脈の有無を入力してください(1:あり 0:なし)\n");//脈の有無入力
  scanf("%d",& new->myaku);
  fprintf(fp,",%d",new->myaku);
  printf("グループIDを入力してください\n");//グループIDの入力
  scanf("%d",& new->gid);
  fprintf(fp,",%d\n",new->gid);
  fclose( fp );//ファイルを閉じる
  new=new->next;
  return 0;
 

一応表示の途中経過

 投稿者:石川バロス  投稿日:2011年 6月 1日(水)15時55分0秒
返信・引用
  #include <stdio.h>
#include <stdlib.h>



struct list
{
  int ID;
  char name[256];
  char mailadd[256];
  int sex;
  int n;
  int groupID;
  struct list *next;
};


int main(void)
{

  FILE* fp;
  struct list *new,*first,*now;

  if( (fp = fopen("add.csv","r")) == NULL) {
    printf("file open error!!\n");
    exit(EXIT_FAILURE);
  }

  printf("here?\n\n\n");

  new = (struct list*)malloc(sizeof(struct list));
  now = new;
  printf("here2?\n\n\n");
  while ( fscanf( fp , "%d,%[^,],%[^,],%d,%d,%d",&now->ID, now->name, now->mailadd, &now->sex, &now->n, &now->groupID) != EOF)
    {
      new = (struct list*)malloc(sizeof(struct list));
      printf("here3?\n\n\n");
      printf("%d %s %s %d %d %d\n", now->ID, now->name, now->mailadd, now->sex,  now->n, now->groupID);
      now->next = new;
      now = new;
    }


  fclose(fp);
  return 0;
}
 

レンタル掲示板
/2