【アルゴリズム】システムとファイル操作
3024 ワード
小続
データ構造とアルゴリズムに対して、すべて思想の方面のもので、実際の運用の中で、多くはシステムとファイルと連絡しているので、データ構造とアルゴリズムを学ぶことに対して、オペレーティングシステムの中のいくつかのコードの実現を参照することができて、結局それはすべて大牛の再三の修正を経て得た精華です.
しかし、私の知っている限りでは、多くの人がひたすらアルゴリズム自体を研究しています.アルゴリズムは主に問題を解決するために使われています.問題に遭遇したとき、どのように解決するか知っていますが、どこから着手するか分かりません.これは悲劇的なことです.実際の応用では、多くの操作はファイルに相当しています.だから、私はここで2つのファイルに関する例を挙げました.アルゴリズムを学ぶ目的を忘れないように注意し、助けてほしい.
ファイル接続
プログラミング:コマンドラインで指定した最初のテキストファイルの内容を2番目のファイルに追加します.
インスタンスの解析:
この例では、コマンドラインから2つのファイル名を指定する必要があるため、パラメータ付きmain()関数を定義する必要があります.
プログラムコード:
ファイルの読み書き操作
ファイルdatは学生情報(氏名,数学,物理,化学の3科目成績,総点)を格納するために用いられる.1つの関数を書いて、キーボードから10人の学生の3科の成績を入力してファイルに保存することができて、更に1つの関数を書いて、これらの点数を読み取って、総点を計算してそして総点をファイルに書きます.
インスタンスの解析:
1人当たり5つのデータを格納する必要があるため、まず構造体を定義します.
最初の関数はファイルを書くために使用され、「wb」または「w」で開く必要があり、2番目のファイルは「読み書き」ファイルで、「rb+」または「r+」で開く必要があります.
2つの関数のコードは次のとおりです.
この文書は「成鵬致遠」ブログから出ています.この出典http://infohacker.blog.51cto.com/6751239/1171369は必ず保持してください.
データ構造とアルゴリズムに対して、すべて思想の方面のもので、実際の運用の中で、多くはシステムとファイルと連絡しているので、データ構造とアルゴリズムを学ぶことに対して、オペレーティングシステムの中のいくつかのコードの実現を参照することができて、結局それはすべて大牛の再三の修正を経て得た精華です.
しかし、私の知っている限りでは、多くの人がひたすらアルゴリズム自体を研究しています.アルゴリズムは主に問題を解決するために使われています.問題に遭遇したとき、どのように解決するか知っていますが、どこから着手するか分かりません.これは悲劇的なことです.実際の応用では、多くの操作はファイルに相当しています.だから、私はここで2つのファイルに関する例を挙げました.アルゴリズムを学ぶ目的を忘れないように注意し、助けてほしい.
ファイル接続
プログラミング:コマンドラインで指定した最初のテキストファイルの内容を2番目のファイルに追加します.
インスタンスの解析:
この例では、コマンドラインから2つのファイル名を指定する必要があるため、パラメータ付きmain()関数を定義する必要があります.
プログラムコード:
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE *fp1,*fp2;
int ch;
if(argc != 3)
{
printf(“ !”);
exit(0);
}
if((fp1 = fopen(argv[1], ”r”)) == NULL)
{
printf(“ :%s
”, argv[1]);
exit(1);
}
if((fp2 = fopen(argv[2], ”a”)) == NULL)
{
printf(“ :%s
”, argv[2]);
exit(1);
}
while((ch = fgetc(fp1)) != EOF)
fputc(ch,fp2);
fclose(fp1);
fclose(fp2);
return 0;
}
ファイルの読み書き操作
ファイルdatは学生情報(氏名,数学,物理,化学の3科目成績,総点)を格納するために用いられる.1つの関数を書いて、キーボードから10人の学生の3科の成績を入力してファイルに保存することができて、更に1つの関数を書いて、これらの点数を読み取って、総点を計算してそして総点をファイルに書きます.
インスタンスの解析:
1人当たり5つのデータを格納する必要があるため、まず構造体を定義します.
typedef struct
{
char name[10];
int score[3];
int sum;
}STU;
最初の関数はファイルを書くために使用され、「wb」または「w」で開く必要があり、2番目のファイルは「読み書き」ファイルで、「rb+」または「r+」で開く必要があります.
2つの関数のコードは次のとおりです.
void input()
{
FILE *fp;
int i;
STU s;
if((fp = fopen(“student.dat”, “wb”)) == NULL)
{
printf(“
”);
exit(0);
}
for(i = 0; i <= 9; i++)
{
scanf(“%s”, s.name);
scanf(“%d%d%d”, &s.score[0],&s.score[1],&s.score[2]);
fwrite(&s, sizeof(STU), 1, fp);
}
fclose(fp);
}
void calculate()
{
FILE *fp;
int i;
STU s;
if((fp = fopen("student.dat", "r+")) == NULL)
{
printf("
");
exit(0);
}
for(i = 0; i <= 9; i++)
{
fseek(fp, sizeof(STU)*i, 0);
fread(&s, sizeof(STU), 1, fp);
s.sum = s.score[0] + s.score[1] + s.score[2];
fseek(fp, -2, 1);
fwrite(&s.sum, 2, 1, fp);
}
fclose(fp);
}
この文書は「成鵬致遠」ブログから出ています.この出典http://infohacker.blog.51cto.com/6751239/1171369は必ず保持してください.