C言語の構造操作

100社のが知られている売上高は、ファイルに記録I​​N.DAT DM製品コードにより販売されている各製品(キャラクタ4)、商品名MC(文字10)、一価DJ(整数)のレコードの数SL(INT)、5部のJEの量(長整数)。ここで、金額=価格*数量計算。読んで、構造体の配列に100回の販売記録を保存されているReadDat機能は、()販売しています。

()関数SortDatを調製、その機能要件てください:製品コードのためには、降順に配置された、製品コード場合と同様、プレス下降量が配置され、まだ関数呼び出しの後、アレイ売りの最終的な構造配置に結果WriteDat()OUT6.DATは、ファイルに結果を出力します。
書式#include <stdio.hに>

書式#include <mem.h>

書式#include <string.hの>

書式#include <conio.h>

書式#include <stdlib.h>に含ま

#define MAX 100

typedefは構造体{

チャーDM [5]; / 商品コード /

チャーMC [11]; / 名前 /

int型のDJ; / 価格 /

int型SL; / /

長いJE; / 金額 /

}プロ;

PRO販売[MAX];

空ReadDat();

空WriteDat();

空SortDat()

{私は、jはint型。

PRO XY;

以下のための式(I = 0、I <99; I ++)

(; J <100; J ++ J = I + 1)のために

IF(のstrcmp(売り[I] .dm、販売[J] .dm)<0 ||のstrcmp(売り[I] .dm、販売[J] .dm)== 0 &&売り[I] .je <売り[J ] .je)

{XY =売り[I]。販売[i]は=販売[J]。販売[J] = XY;}

}

無効メイン()

{

memsetの(販売、0、はsizeof(売り));

ReadDat();

SortDat();

WriteDat();

}

空ReadDat()

{

FILE * fpを。

文字列str [80]、CH [11]。

私はint型。

FP =のfopen(「IN.DAT」、「R」)。

以下のための式(I = 0、I <100; I ++){

関数fgets(STR、80、FP)。

memcpy(売り[I] .dm、STR、4)。

memcpy(販売[I]の.mc、STR + 4,10)。

memcpy(CH、STR + 14,4); CH [4] = 0;

販売[I] .dj = ATOI(CH)。

memcpy(CH、STR + 18,5)。

CH [5] = 0; 販売[I]の.sl = ATOI(CH)。

[i]を.je =(ロング)販売を販売[i]を.dj *販売[I]の.sl。

}

FCLOSE(FP)。

}

空WriteDat(無効)

{

FILE * fpを。

私はint型。

FP =のfopen( "OUT6.DAT"、 "W")。

以下のための式(I = 0、I <100; I ++){

printf( "%S%S%4D%5D%5D \ n" は、販売[I] .dm、販売[I]の.mc、販売[I] .dj、販売[I]の.sl、販売[I]。 JE);

関数fprintf(FP、 "%S%S%4D%5D%5D \ n" は、販売[I] .dm、販売[I]の.mc、販売[I] .dj、販売[I]の.sl、販売[I ] .je)。

}

FCLOSE(FP)。

}

公開された239元の記事 ウォンの賞賛3 ビュー3146

おすすめ

転載: blog.csdn.net/it_xiangqiang/article/details/105176944