[C / C++] 例えば、Cのバイナリ·ファイルのタイプにレコードデータ型の構造を読み込む
スレッドを使った:
ノートブックは、次の機能が含まれて管理するためのプログラムを書く :
関数 1 : 輸入品
関数 2 : ソート製品
関数 3 : 製品を検索する
関数 1 :
– インポートする製品を使用する方法多くの人々掲載 , その後、ユーザーが含まれる製品の情報を入力することができます:
* 製品コード
* 製品名
* 製品の数
* 製品
これらは、名前のテキストファイルに格納されている ” Products.txt ” .
例: ” Products.txt ” ファイル
コード名数量価格 ( 100万 )
01 Asusの生体内 3 12
02 VAIO E 2 10
03 エイサーX 4 11.5
関数 2 :
ユーザーがファイルを読み取ることができます ” Products.txt ” ; 価格の製品によるソート製品, し、ファイルを保存します.
関数 3 :
ユーザーは、ファイルから製品を検索することができます ” Products.txt” 製品コードまたは製品名や製品情報一貫下 .
次のコードは、上にデータを記録することで作業を行います 2 ファイル, 要求に応じてテキストファイル及び 1 芸術施設の記録されたデータを読み込むためのPRODUCTS.DATバイナリファイル.
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | /* C/C++ program - code by nguyenvanquan7826 <blockquote class="wp-embedded-content" data-secret="EQEoacPMVz"><a href="https://cachhoc.net/">Home</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" src="https://cachhoc.net/embed/#?secret=EQEoacPMVz" data-secret="EQEoacPMVz" width="600" height="338" title="“Home” — Cách học" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define fio "Products.txt" #define fbin "Products.dat" typedef struct products{ char Id[50], name[50]; int quantity; // so luong double cost; // gia } product; void input(product prd[], int *n); void writeBin(product prd[], int n); void write(product prd[], int n); void sort_cost(product prd[], int n); void readBin(product prd[], int *n); void output(product prd[], int n); void search_id(product prd[], int n, char id[]); void search_name(product prd[], int n, char name[]); void search(product prd[], int n); int main() { product prd[50]; int n; int select; do { printf ( "Products:\n-----------------\n" ); printf ( "1: input\n2: read and sort by cost\n3: Search\n4: exit\n" ); printf ( "Enter the number to work: " ); scanf ( "%d" , &select); switch (select){ case 1: { printf ( "1: INPUT\n" ); input(prd, &n); write(prd, n); break ; } case 2: { printf ( "2: READ AND SORT BY COST\n" ); printf ( "Befor sort:\n--------------\n" ); readBin(prd, &n); output(prd, n); sort_cost(prd, n); write(prd, n); printf ( "After sort:\n--------------\n" ); readBin(prd, &n); output(prd, n); break ; } case 3: { printf ( "SEARCH\n" ); search(prd, n); break ; } case 4: return 0; default : printf ( "Error select !" ); break ; } } while (select != 4); return 0; } void input(product prd[], int *n){ int i; char s[50]; printf ( "Enter the number of products: " ); scanf ( "%d" , n); gets (s); printf ( "n" ); for (i = 0; i < (*n); i++){ printf ( "Enter the Id of products %d : " , i+1); gets (prd[i].Id); printf ( "\tEnter the nam of products %d : " , i+1); gets (prd[i].name); printf ( "\tEnter the quantity of products %d : " , i+1); scanf ( "%d" , &prd[i].quantity); printf ( "\tEnter the cost of products %d : " , i+1); scanf ( "%lf" , &prd[i].cost); gets (s); } } void writeBin(product prd[], int n){ FILE *f = fopen (fbin, "wb" );; int i; if (f==NULL) printf ( "Error load file" ); else fwrite (prd, sizeof (product),n,f); fclose (f); } void write(product prd[], int n){ int i; FILE *f = fopen (fio, "w" ); if (f==NULL) printf ( "Error load file" ); fprintf (f, "%-10s %-15s %-10s %-10s\n" , "Id" , "Name" , "Quantity" , "Cost" ); for (i = 0; i < n; i++) fprintf (f, "%-10s %-15s %-10d %-10.2lf\n" , prd[i].Id, prd[i].name, prd[i].quantity, prd[i].cost); fclose (f); writeBin(prd, n); printf ( "input and write success to file!n" ); } void sort_cost(product prd[], int n){ int i, j; for (i = 0; i < n - 1; i++){ for (j = i + 1; j < n; j++){ if (prd[i].cost > prd[j].cost){ product temp = prd[i]; prd[i] = prd[j]; prd[j] = temp; } } } } void output(product prd[], int n){ int i; printf ( "%-10s %-10s %-15s %-10s %-10s\n" , "Order" , "Id" , "Name" , "Quantity" , "Cost" ); for (i = 0; i < n; i++) printf ( "%-10d %-10s %-15s %-10d %-10.2lf\n" , i + 1, prd[i].Id, prd[i].name, prd[i].quantity, prd[i].cost); } void readBin(product prd[], int *n){ FILE *f = fopen (fbin, "rb" ); fseek (f,0,SEEK_END); //Nhay ve cuoi file, di chuyen di 0 vi tri (*n) = ( ftell (f)+1)/ sizeof (product); //ftell(); tra ve vi tri hien tai cua con tro // SEEK_CUR: di chuyen bat dau tu vi tri hien tai cua con tro, chi dung trong fseek() fseek (f,0,SEEK_SET); //Nhay ve dau file, di chuyen di 0 vi tri fread (prd, sizeof (product),(*n),f); fclose (f); } void search_id(product prd[], int n, char id[]){ int i, check = 0; for (i = 0; i < n; i++){ if ( strcmp (id, prd[i].Id) == 0){ check = 1; printf ( "%-10s %-10s %-15s %-10s %-10s\n" , "Order" , "Id" , "Name" , "Quantity" , "Cost" ); printf ( "%-10d %-10s %-15s %-10d %-10.2lf\n" , i + 1, prd[i].Id, prd[i].name, prd[i].quantity, prd[i].cost); break ; } if (check == 0 && i == n - 1) printf ( "Not found product have Id is %s !\n" , id); } } void search_name(product prd[], int n, char name[]){ int i, check = 0; for (i = 0; i < n; i++){ if ( strcmp (name, prd[i].name) == 0){ check = 1; printf ( "%-10s %-10s %-15s %-10s %-10s\n" , "Order" , "Id" , "Name" , "Quantity" , "Cost" ); printf ( "%-10d %-10s %-15s %-10d %-10.2lf\n" , i + 1, prd[i].Id, prd[i].name, prd[i].quantity, prd[i].cost); break ; } if (check == 0 && i == n - 1) printf ( "Not found product have name is %s !\n" , name); } } void search(product prd[], int n){ int select; char s[50]; do { printf ( "\t1: Id\n\t2: Name\n\t3: exit search\nEnter the type you want search: " ); scanf ( "%d" , &select); gets (s); switch (select){ case 1: { printf ( "Enter Id want search: " ); char id[50]; gets (id); search_id(prd, n, id); break ; } case 2: { printf ( "Enter name want search: " ); char name[50]; gets (name); search_name(prd, n, name); break ; } case 3: return ; default : printf ( "Error select !" ); break ; } } while (select != 3); } |
私はあなたの先生に敬礼します!
私は、次の質問を持っています: バイナリファイルの, 次の操作を行い、電子ファイルの画分を含む行列を必要とします: 関数fread(matran, はsizeof(Fnso), ドン * コット, F);
とともに: Matranマトリックス画分, そして、phanSo宣言された構造体の電子サーとして.
あなたが私に先生の答えを助けるホープ.
私はあなたに感謝. !
あなたはとても右に書きます. だから、あなたが答えるために必要なもの?
私はちょうどk個のV退職を行うお願いしたいと思います, 子供たちはあなたに感謝. 私は彼がやって理解します. :))
Eは、バイナリ・ファイルを格納するために使用しました 1 とぼとぼ歩くクラスの生徒のリスト.
Lmと同様のサー.
しかし、どういうわけか、ファイルkは障害のあるフォントで行われています.
家庭は、先生のK E DCを説明することができます?
それは、テキストではなくバイナリとして保存されているので、あなたは読むことができないので、.