[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 13:42 / Filesize : 213 KB / Number-of Response : 830
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 27



1 名前:デフォルトの名無しさん [2008/04/29(火) 09:44:57 ]
言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 26
pc11.2ch.net/test/read.cgi/tech/1206196600/
過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 105代目
pc11.2ch.net/test/read.cgi/tech/1208268461/


602 名前:側近中の側近 ◆0351148456 [2008/05/11(日) 22:39:49 ]
(っ´▽`)っ
/*
*戻り値:
*エラーなし:0
*エラーあり:エラーがある行番号(見出し行を除く)
*/
int existInMaster(void)
{
  int    returnCode = -1; /*戻り値*/
  FILE  *fp = NULL; /*ファイルポインタ*/
  char  line[1024]; /*ファイル読み込みバッファ*/
  int    lineCount = 0; /*行番号*/
  shohinMaster *sm = NULL; /*商品マスタ配列*/

  /*以下、売上ファイルレコード格納用変数*/
  char  shohinCode[256]; /*商品コード*/
  char  kokyakuCode[256]; /*顧客コード*/
  int    suryo; /*数量*/

  int    count = 0; /*商品マスタ配列サイズ*/
  int    i; /*ループカウンタ*/

  /*商品コードマスタを全て読み込み、商品マスタ配列に格納する*/
  fp = fopen("./商品コードマスタ.csv", "r");
  fgets(line, sizeof(line), fp);  /*1行目は見出し*/
  while(fgets(line, sizeof(line), fp) != NULL){
    sm = (shohinMaster *)realloc(sm, sizeof(sm[0]) * (count + 1));
    sscanf(line, "%[^,],%[^,],%d", sm[count].shohinCode, sm[count].shohinName, &(sm[count].tanka));
    count++;
  }
  fclose(fp);


603 名前:側近中の側近 ◆0351148456 [2008/05/11(日) 22:40:30 ]
  /*商品マスタ配列を商品コードの昇順に並べる*/
  qsort(sm, count, sizeof(sm[0]), cmp);
  /*売上ファイルを1行ずつ読み込み、商品コードを商品マスタ配列と照合する*/
  fp = fopen("./売上ファイル.csv", "r");
  fgets(line, sizeof(line), fp);  /*1行目は見出し*/
  while(fgets(line, sizeof(line), fp) != NULL){
    lineCount++;
    sscanf(line, "%[^,],%[^,],%d", kokyakuCode, shohinCode, &suryo);
    for(i = 0; i < count; i++){
      if(strcmp(sm[i].shohinCode, shohinCode) == 0){
        break;
      }
      /*商品マスタ配列は商品コードの昇順に並べている*/
      if(strcmp(sm[i].shohinCode, shohinCode) > 0){
        returnCode = lineCount;
        goto END;
      }
    }
    /*商品マスタ配列にない場合、行番号を返す*/
    if(i == count){
      returnCode = lineCount;
      goto END;
    }
  }
END:
  return returnCode;
}
/*商品マスタ配列を並べる時、商品コードの昇順に並ぶようにする*/
int cmp(const void *elem1, const void *elem2){
  return strcmp(((shohinMaster *)elem1)->shohinCode, ((shohinMaster *)elem2)->shohinCode);
}







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<213KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef